我在joomla 3.9+上有网站。我将网站转换为pwa应用程序,对于内容缓存,请使用动态缓存。这是我的sw.js文件的代码。
const dynamicCacheName = 'site-dynamic-v1';
// activate event
self.addEventListener('activate', evt => {
evt.waitUntil(
caches.keys().then(keys => {
return Promise.all(keys
.filter(key => key !== dynamicCacheName)
.map(key => caches.delete(key))
);
})
);
});
// fetch event
self.addEventListener('fetch', evt => {
evt.respondWith(
caches.match(evt.request).then(cacheRes => {
return cacheRes || fetch(evt.request).then(fetchRes => {
return caches.open(dynamicCacheName).then(cache => {
cache.put(evt.request.url, fetchRes.clone());
return fetchRes;
})
});
})
);
});
此代码可快速缓存所有内容,并添加cacheStorage。审计LightHouse告诉我,一切都很好,我拥有完整的pwa应用程序。但是,将新文章添加到网站时不会在FrontEnd上推断出,只能推断出已缓存的serviceWorker,因此必须手动清除。我如何更新serviceWorker,以便在补充网站时自动发布新的网站内容。我可以在网站上使用哪些缓存策略?我不想使用静态缓存,因为网站上有很多脚本和样式,以及从不同CDN加载的字体。
PWABuilder.com有一个高级缓存示例服务工作程序,该工作程序具有三个单独的缓存数组选项:将文件数组添加到应用的预缓存中添加应首先进入网络的路径的正则表达式数组添加不应缓存的路径的正则表达式数组
我已经注意到joomla admin和PWA中的异常行为,我认为排除管理员(即不进行缓存)会有所帮助,但至少对于正则表达式路径而言,数组语法尤其令人困惑。我不知道您如何确保预缓存新内容。这里只是建议高级缓存选项一定是一个好的开始。
有人见过或写过为joomla优化缓存的服务人员吗?什么是网络优先,什么不应该缓存?