在添加服务工作者和缓存 app-shell 之前,与网页相关的文件(例如 main.css、app.js、shims.js..)的传出请求被浏览器缓存。因此,对这些文件的任何进一步请求都会返回缓存版本(如果 max-age 过期,这些请求将使用 Etag 进行验证),其中也包括带有时间戳的请求。(此行为在页面正常访问期间仍然相同。)
现在网页 (PWA) 首次请求内容。接收到内容后,Service Worker 安装事件开始在后台获取指定文件:
var urlsToCache = [
"/",
"/css/main.css",
"/js/app.js",
"/js/shims.js",
"/assets/playstore.png",
"/assets/logo_amcs_small.png",
"/assets/appstore.png",
"/assets/i18n/en.json",
"/assets/i18n/de.json",
"/fonts/fontawesome-webfont.woff2?v=4.7.0"
];
其中一些是从浏览器缓存(磁盘/内存缓存)中获取的,但有些是再次下载的(de.json、en.json、app.js、shims.js、main.css),请参见 attacehd 图像。当从网页执行请求时,所有这些 URI 都包含时间戳,但在进一步请求时仍会从浏览器缓存中返回。
为什么在服务工作者的“安装”事件中获取这些文件时会有所不同?
顺便说一句,我正在尝试减少整体网络请求,因此再次下载这些文件不是很好..