应该与PWA相关的资源中的任何一种与服务器上的任何高速缓存标头一起使用,还是应该通过完全关闭经典的HTTP高速缓存来将其移开呢?
即,什么是http缓存标头:
清单文件
与此相关,清单文件的新版本(例如,图标更改)如何到达客户端?
服务工作者js 文件 (这有点棘手,因为浏览器每24小时检查一次新版本,因此可能需要一些缓存?)
index.html (spa的进入点)
我的理解是应该将其完全关闭,所有缓存都应由服务工作者处理,但是那里似乎有不同的信息,并且很难提取最佳实践。
答案 0 :(得分:1)
https://web.dev/reliable/http-cache上有一些指南,以及网络上的许多其他资源。
通常,构建PWA和引入服务工作者不会改变HTTP缓存应遵循的最佳实践。
对于在其网址中包含版本信息的资产(例如/v1.0.0/app.js
或/app.1234abcd.js
),并且您知道给定URL的内容甚至不会更改,则应使用{{1 }}。
对于资产的URL中不包含版本信息的资产(例如大多数HTML文档,以及Cache-Control: max-age=31536000
,如果您不在其中包含哈希),则应将/manifest.json
设置为Cache-Control: no-cache
或ETag
,以确保先前缓存的响应在使用前得到重新验证。
对于您的服务工作者文件本身,现代浏览器will ignore the Cache-Control
header会默认设置您的值,因此这并不重要。但是,使用Last-Modified
仍然是一种最佳做法,以便较早的浏览器在使用前重新验证它。