【发布时间】:2019-09-26 22:58:29
【问题描述】:
每当我对使用 Laravel 开发的网站进行任何更新时,我都必须删除浏览器缓存以反映更改。这既适用于在本地主机上工作,也适用于我在服务器上部署它时。是否有任何方法可以自动化该过程,无论是在每次新更新后删除缓存的 Service Worker 中吗?
这是我的 serviceworker.js
var staticCacheName = "pwa-v" + new Date().getTime();
var filesToCache = [
'/offline.html',
'/css/style.css',
'/js/app.js',
];
// Cache on install
self.addEventListener("install", event => {
this.skipWaiting();
event.waitUntil(
caches.open(staticCacheName)
.then(cache => {
return cache.addAll(filesToCache);
})
)
});
// Clear cache on activate
self.addEventListener('activate', event => {
event.waitUntil(
caches.keys().then(cacheNames => {
return Promise.all(
cacheNames
.filter(cacheName => (cacheName.startsWith("pwa-")))
.filter(cacheName => (cacheName !== staticCacheName))
.map(cacheName => caches.delete(cacheName))
);
})
);
});
// Serve from Cache
self.addEventListener("fetch", event => {
event.respondWith(
caches.match(event.request)
.then(response => {
return response || fetch(event.request);
})
.catch(() => {
return caches.match('/offline.html');
})
)
});
【问题讨论】:
-
@newUserName02 非常感谢您提供的链接。我在文档中看到了生产中的缓存突发。我正在使用 ElasticBeanstalk 并通过 ElasticBeanstalk GUI 上传我的应用程序。 mix.js('resources/js/app.js', 'public/js'); if (mix.inProduction()) { mix.version(); } 这段代码与它相关吗?
-
是的,这就是您在 webpack 混合文件中所需要的。此外,您需要更新调用已编译资产的刀片模板以使用
{{ mix('/js/app.js') }}和类似的 css。
标签: javascript laravel deployment service-worker web-development-server