SPA-是否应为所有与pwa相关的资源关闭服务器http缓存?

时间:2019-04-05 11:10:40

标签: service-worker progressive-web-apps

应该与PWA相关的资源中的任何一种与服务器上的任何高速缓存标头一起使用,还是应该通过完全关闭经典的HTTP高速缓存来将其移开呢?

即,什么是http缓存标头:

  1. 清单文件

    与此相关,清单文件的新版本(例如,图标更改)如何到达客户端?

  2. 服务工作者js 文件 (这有点棘手,因为浏览器每24小时检查一次新版本,因此可能需要一些缓存?)

  3. index.html (spa的进入点)

我的理解是应该将其完全关闭,所有缓存都应由服务工作者处理,但是那里似乎有不同的信息,并且很难提取最佳实践。

1 个答案:

答案 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-cacheETag,以确保先前缓存的响应在使用前得到重新验证。

对于您的服务工作者文件本身,现代浏览器will ignore the Cache-Control header会默认设置您的值,因此这并不重要。但是,使用Last-Modified仍然是一种最佳做法,以便较早的浏览器在使用前重新验证它。