如何将缓存控制设置为始终检查更新,但如果服务器无法访问则始终回退到缓存

How to set cache-control to always check for updates but always fall back to cache if server is unreachable

我遗漏了一些试图理解缓存控制的东西(例如,来自 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control)。

如何设置缓存控制以完成以下操作(我将使用 .htaccess 文件):

  1. 如果客户端获取文件,它应该始终将其存储在缓存中。
  2. 当客户端需要一个文件时,它应该经常检查文件是否被更改,如果有更改则下载一个新的副本。
  3. 如果检查尝试失败——例如,服务器关闭或没有 Internet 连接——客户端应始终使用缓存副本(如果可用),无论该副本有多旧。任何文案都优于none.

使用Cache-Control: no-cache并设置ETagheader。

  1. 资源将存储在缓存中。除了 no-store.
  2. 之外的任何缓存 header 都是如此
  3. no-cache 告诉客户端它必须检查服务器以查看缓存的副本是否有效。它通过发送条件请求来实现,这要求缓存的响应具有 ETag(或 Last-Modified)header.
  4. 默认行为是在没有连接时使用资源的缓存副本。您可以使用 must-revalidate 指令来防止这种情况。