javascript - ServiceWorker 不缓存资产
问题描述
我正在研究 aProgressive Web App
并且正在使用Chrome Developer Tools
. 我已Service Worker
安装并与Fetch
事件一起激活。我在我的 sw.js 文件中添加了缓存代码。当我重新加载页面并查看Cache Storage
. 我确实看到了静态站点,但看起来没有任何缓存。
sw.js 脚本
const staticCacheName = 'site-static';
const assets = [
'/',
'/index.html',
'/app.js',
'/script.js',
'/style.css',
'https://fonts.googleapis.com/css?family=Audiowide',
'https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css',
'https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW',
'/images/AppliedArts.PNG',
'/images/MasterBA.png',
'/images/MscCS.png',
'/images/MscEngineer.png',
'/images/UXDesign.png'
];
// install event
self.addEventListener('install', evt => {
//console.log('service worker installed');
evt.waitUntil(
caches.open(staticCacheName).then((cache) => {
console.log('caching shell assets');
cache.addAll(assets);
})
);
});
解决方案
我发现了这个问题。整个设置是正确的。问题出在我包含在“sw.js”文件的“资产”中的网址中。网址前面的正斜杠导致了问题。解决此问题的最佳方法是消除所有 url 并逐个添加。
const assets = [
'/',
'index.html',
'images/AppliedArts.PNG',
'images/MasterBA.png',
'images/MscCS.png',
'images/MscEngineer.png',
'images/UXDesign.png',
'images/logo.png',
'style.css',
'https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css',
'https://fonts.googleapis.com/css?family=Audiowide',
'https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js',
'manifest.json',
'app.js',
'https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js',
'script.js'
];
推荐阅读
- flutter - Flutter Like 按钮逻辑语句
- azure-devops - 自托管代理可以在特定时间设置为启用吗?
- node.js - 我需要更新 mongodb 中的一条记录?
- c# - 我将如何返回 N 个 IEnumerable
C# 中单个方法的值? - jenkins - 如何防止一些 Jenkins 构建被丢弃?
- python - 如何使用 Matplotlib 以不同颜色可视化 2 个或更多矩形的交集
- javascript - Javascript将信息从一个函数传递到另一个函数
- python - 从在 python ThreadPoolExecuter 中运行 kafka 消费者的 concurrent.futures 获取结果
- mongodb - MongoDB 删除集合并以事务方式插入新数据
- bash - 如何在 shell 脚本中使用 curl 命令将嵌套对象数据作为发布数据发送?