我用微风开发了一个应用程序。我需要在本地缓存中检索一个 id=123 的实体,所以我最终遇到了第一种情况:
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);
}
接下来我需要扩展一些属性,所以我最终得到了第二种情况:
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) 时注意到了差异。
第一种情况:按 F5 时:查询能够检索本地缓存中的数据。所以用户可以按多次F5,微风仍然会使用本地缓存。
第二种情况:当按 F5 时:查询在本地缓存中没有找到任何东西,然后fetchSucceed
发生错误,s.isPartial()
因为 s in undefined
。
我的问题:为什么在第二种情况下刷新浏览器似乎会清除本地缓存的微风?如何继续避免这种行为?
谢谢。