【发布时间】:2017-07-27 11:51:56
【问题描述】:
我看到使用Cache-Control 和max-age 可以让浏览器缓存网页(及其资源,如CSS、JS、图片等)一段时间。
但我想做以下事情:
- 无论缓存包含什么,尝试联系服务器(“正常”行为)
- 如果服务器响应,则使用服务器的响应(可能是 304)
- 如果服务器没有响应(即:服务器关闭,或者您像在移动设备上一样离线),则使用缓存包含的内容(如果缓存不包含任何内容,则显示错误)。李>
我真的不明白如何使用 HTTP 响应标头来实现这一点。尝试Cache-Control: max-age=3600 会将响应缓存一个小时,而浏览器永远不会联系服务器。并且使用Cache-Control: no-cache 会强制客户端联系服务器,如果移动设备离线/服务器不可用,则始终返回错误。
要用于所需行为的 HTTP 标头值是什么(业务目标是保留最后一个浏览器缓存版本,以便即使在离线时也能继续使用网站)?
【问题讨论】:
-
似乎没有 HTTP-header-simple 方法可以做到这一点,除了不实现
stale-if-error(实际上会很棒)。我会尝试服务人员而不是developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/…
标签: http-headers browser-cache cache-control