日安..我的工作箱出了点问题。当我将策略设置为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)发布于 2020-08-17 15:52:02
日安..把它用在我的项目上了。
在workbox.routing.registerRoute中添加了以下几行代码
new workbox.cacheableResponse.Plugin({
statuses: [200]
})不过,Ⅰ仍然不知道如何在Symfony上预先缓存我的assetic文件。
https://stackoverflow.com/questions/63409103
复制相似问题