在添加服务工作者并缓存app-shell之前,浏览器会缓存与网页相关的文件的传出请求(例如main.css,app.js,shims.js ..)。因此,对这些文件的任何进一步请求都返回缓存版本(如果max-age已过期,则使用Etag验证这些请求),其中包括具有时间戳的请求。 (在页面的正常访问期间,此行为仍然相同。)
现在,网页(PWA)首次请求内容。收到内容后,服务工作者安装事件开始在后台获取指定的文件:
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都包含从网页执行请求时的时间戳,但仍会在进一步请求时从浏览器缓存中返回。
为什么在"安装"中提取这些文件时会有所不同?服务工作者的事件?
是的,我试图减少整体网络请求,因此再次下载这些文件并不是很好..