Я разрабатываю приложение с бризом. Мне нужно получить объект с идентификатором = 123 в локальном кэше, так что я в конечном итоге с 1-го сценария:Нажатие F5 после «EntityQuery.fromEntityKey», похоже, очищает локальный кеш с бризами
return manager.fetchEntityByKey("Transport", 123, true) // 3rd param is true --> local cache
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
var s = data.entity;
return s.isPartial() ? refreshTransport(s) : transportObservable(s);
}
Далее мне необходимо расширить некоторые свойства, так что я в конечном итоге с 2-го сценария:
var entityType = manager.metadataStore.getEntityType("Transport");
var entityKey = new EntityKey(entityType, 123);
var query = EntityQuery.fromEntityKey(entityKey)
.expand("Sender.City, Sender.City.Country")
.using(breeze.FetchStrategy.FromLocalCache);
return manager.executeQuery(query)
.then(fetchSucceeded)
.fail(queryFailed);
function fetchSucceeded(data) {
var s = data.results[0];
return s.isPartial() ? refreshTransport(s) : transportObservable(s);
}
Я выполняю несколько тестов по 2 сценариям, и я заметил разницу при обновлении браузера (F5).
1-й сценарий: при нажатии F5 запрос может извлекать данные в локальном кеше. Таким образом, пользователь может нажать несколько раз F5, и ветерок все равно будет использовать локальный кеш.
2-й сценарий: при нажатии F5 запрос не находит ничего в локальном кеше, а затем в fetchSucceed
произошла ошибка с s.isPartial()
, потому что s в undefined
.
Мой вопрос: почему обновление браузера во втором сценарии, похоже, устраняет локальный кеш-ветер? Как действовать, чтобы избежать такого поведения?
Спасибо.
Это ясно для меня сейчас. Спасибо. – Bronzato