App Shell结构加载后动态内容无法更新怎么办?
我在做PWA的App Shell结构时遇到问题,shell骨架加载成功了,但后续通过fetch获取的数据内容始终不更新。我用Cache.match缓存了shell页面,但数据接口返回的是旧数据,明明后端已经改过了。
尝试过在service worker里这样处理数据请求:
self.addEventListener('fetch', function(event) {
if (event.request.url.includes('/api/data')) {
event.respondWith(
caches.match(event.request)
.then(cacheRes => cacheRes || fetch(event.request))
);
}
});
清除浏览器缓存也没用,控制台没报错,就是显示旧数据。是不是缓存策略哪里写错了?怎么让动态数据能正常更新呢?
caches.match,得强制走网络请求。改一下代码逻辑:先走网络,失败再回退到缓存,数据就能正常更新了。别忘了在后端给接口加个合适的
Cache-Control响应头,比如no-cache或者短时间过期,避免被强缓存坑了。