问题描述
早上好。.我的工作箱有问题。当我将策略设置为NetworkFirst时,每次单击页面时,它都会缓存至少20MB的文件。如果我在同一页面上单击,它将再次保存至少20MB的另一个缓存。与StaleWhileRevalidate相同,但更糟。如果我使用CacheFirst,页面仅缓存1-2MB,但是如果页面上有更改,它将不会反映出来。如果我删除了旧的缓存,它将立即反映出来。
这是我的示例代码。希望你能帮我这个忙。
importScripts('https://storage.googleapis.com/workBox-cdn/releases/3.4.1/workBox-sw.js');
if (workBox) {
const CACHE_PREFIX = 'v01';
workBox.setConfig({
clientsClaim: true,debug: true,skipwaiting: true
});
workBox.core.setLogLevel(workBox.core.LOG_LEVELS.warn);
// Javascript and CSS rule
workBox.routing.registerRoute(
new RegExp('^.*(?:js|css)'),new workBox.strategies.NetworkFirst(
{ cacheName: `${CACHE_PREFIX}-asset` }
),);
// Main rule - to cache everything,// i dont kNow why on this part,it wont cache CSS and JS
// sw.js is also cached here
workBox.routing.registerRoute(
new RegExp('^.*(?:)'),new workBox.strategies.NetworkFirst(
{ cacheName: `${CACHE_PREFIX}-main` }
),);
} else {
console.log(`Boo! WorkBox didn't load ?`);
}
我的Symfony项目结构是否有帮助:
root/sw.js and manifest.json
root/js/assetic files (ex 909ab227.js)
root/css/assetic files (ex 307a9c17.css)
root/../var/cache/dev/twig/a lot of folders (ex alphanumeric.PHP)
解决方法
美好的一天..让它在我的项目上工作。
在workbox.routing.registerRoute
new workbox.cacheableResponse.Plugin({
statuses: [200]
})
Ⅰ仍然不知道如何在Symfony上预缓存我的资产文件。