Web appcache的正确缓存控制标头

Web appcache的正确缓存控制标头,web,caching,http-headers,cache-control,Web,Caching,Http Headers,Cache Control,我很难找到一个缓存控制头来传递用于使用AppCache的HTML5应用程序的文件,AppCache可以在所有主流浏览器(Chrome/Safari、Opera、Firefox、IE10)上运行 我遇到的问题是,当一种标题适用于某个浏览器时,另一种可能会完全中断。例如: Cache-Control: private 在Webkit浏览器上运行良好,它们会刷新和加载更新的文件,并在缓存中替换它们。然而,Firefox和IE10都拒绝加载新文件,而是从缓存(而不是appcache!)中获取它们,即使

我很难找到一个缓存控制头来传递用于使用AppCache的HTML5应用程序的文件,AppCache可以在所有主流浏览器(Chrome/Safari、Opera、Firefox、IE10)上运行

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

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

Cache-Control: no-cache
在webkit浏览器上也可以很好地工作,也可以让Firefox和IE10加载新文件,而不是从缓存中加载,但会中断脱机功能,因为它们基本上不会缓存(正如标题所示)文件,即使appcache清单中明确提到了这些文件

最后,我试过了

Cache-Control: must-revalidate
它的工作原理类似于无缓存,但不是Firefox和IE10不保留文件供脱机使用,而是Webkit不保留文件

不发送缓存控制头会产生与
private
public
相同的结果,因为我假设浏览器只是将其作为标准方式

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


有人能告诉我们哪一个缓存控件头是正确的,可以在所有浏览器上使用吗?

缓存控件:无缓存不应该以您描述的方式工作。实际上,它说:“在Firefox中,任何带有缓存控制的资源都不会被缓存,即使它们显式地包含在清单中。”。你试过以下组合吗?“没有缓存,必须重新验证”你让它工作了吗?不是真的,我们提供了带有
private
标题的文件,并为非webkit浏览器弹出一条消息,告诉用户请清空缓存并重新加载页面。