2

在添加服务工作者和缓存 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 都包含时间戳,但在进一步请求时仍会从浏览器缓存中返回。

为什么在服务工作者的“安装”事件中获取这些文件时会有所不同?

首次加载 PWA 时的网络请求 - 服务工作者安装时缓存中没有任何内容

顺便说一句,我正在尝试减少整体网络请求,因此再次下载这些文件不是很好..

4

0 回答 0