使用 cache-control header 的离线网络应用程序?

Offline web app using cache-control header?

您好,我们有一个移动应用程序(iOS 和 Android)需要使用嵌入式 UIWebView 或 WebView 显示一些网页。这些页面需要支持离线浏览 7-10 天。我们正在考虑两种替代方案 - AppCache 和 cache-control header:

cache-control: max-age=604800

我们 运行 使用这两种方法的许多概念证明。这两种方法似乎都能满足我们的需求。 Cache-control 似乎有一点优势,我们可以在 Web 服务器配置中为所有 JS、CSS 和图像文件使用通配符来设置它的值。至于缓存清单,我们需要单独列出每个文件。

话虽如此,我没有发现任何人试图使用 cache-control 构建离线应用程序。几乎所有文章和博客 post 都使用 AppCache。我在这里缺少什么吗?

离线使用 cache-control 的一个问题是用户在离开之前需要访问应用程序中的所有页面,否则他们将无法缓存以供下次访问时使用。应用程序缓存列出所有需要的页面并立即缓存它们。

cache-control 也不设计为支持离线应用程序(看起来),并且存在问题,例如浏览器未从 some circumstances 中的缓存加载。所以你不能保证浏览器在离线时不会尝试发送资源请求(导致页面显示网络故障)。

基本上,如果你想让它可靠地工作,你应该使用 App Cache 或 Service Workers。