9

我很难找出一个缓存控制标头来交付用于使用 AppCache 的 HTML5 应用程序的文件,该应用程序适用于所有主要浏览器(Chrome/Safari、Opera、Firefox、IE10)。

我遇到的问题是,当一种标头适用于某个浏览器时,另一种可能会完全中断。例如:

Cache-Control: private

在 Webkit 浏览器上运行良好,它们刷新和加载更新的文件并在缓存中替换它们。然而 Firefox 和 IE10 都拒绝加载新文件,而是从缓存中获取它们(不是 appcache!),即使它们识别更新的清单文件。

Cache-Control: no-cache

在 webkit 浏览器上也可以正常工作,并且还使 Firefox 和 IE10 加载新文件,而不是从缓存中加载它们,但会破坏离线功能,因为它们基本上不缓存(如标题所示)文件,即使它们在 appcache 清单中明确提及。

最后,我尝试了

Cache-Control: must-revalidate

它的工作原理类似于no-cache但不是 Firefox 和 IE10 不保留文件以供离线使用,它是不保留文件的 Webkit。

private不发送 Cache-Control 标头会产生与or相同的结果public,因为我假设浏览器只是将其视为标准方式。

那么我错过了什么?public具有相同的结果,private并且设置 max-age 不是一个选项,因为更新(包括修补程序)不是定期提供的,而是在可用或需要时提供。

有人可以阐明哪个 Cache-Control 标头是正确的,它适用于所有浏览器吗?

4

0 回答 0