HTML5应用程序缓存更新问题(从浏览器缓存更新)

时间:2013-03-07 12:30:23

标签: web-applications http-headers html5-appcache

在这个问题上我一直没有任何运气,一直保持安静,希望有人可以提供帮助。

在开发具有应用程序缓存的Web应用程序时,问题涉及应用程序缓存,浏览器缓存和代理。

关于网络应用

网络应用程序显示高分辨率图像,并允许用户在它们之间导航。为了使交互流畅,所有图像都使用ajax预加载(加载是半智能的,因此它将在加载时显示图像,然后继续在后台加载其余图像)。除此之外,整个Web应用程序都缓存在应用程序缓存中(使用清单文件),以便在iPad上脱机访问。此外,这将提高其他浏览器的一般性能。

问题:

更新清单文件后,浏览器(主要在OSX上的Chrome和Firefox中测试)从浏览器缓存中加载文件,而不是从服务器请求它们。有时,浏览器缓存已过期,请求将转到实际服务器或代理。通常,这会导致Web应用程序无法更新。

我们尝试过缓存控件标题:

no-cache,必须重新验证 (在Firefox中使用它所需的无缓存)。

这适用于支持应用程序缓存的浏览器,强制它们在请求中包含这两个标头:

  • 如果-无 - 匹配
  • 如果-Modified-Since的

从清单文件中请求新资产时。但是,在不支持应用程序缓存的浏览器或被告知不通过清单文件缓存任何内容的浏览器中,没有文件缓存在常规浏览器缓存中。然后,这些浏览器在显示图像时将再次请求图像(不使用已通过ajax调用下载的缓存图像)。服务器将以304响应,因此问题不是太糟糕,但它不是最佳解决方案。

我想要的是什么:

我希望缓存应用程序缓存中文件的浏览器包含两个标头:

  • 如果-无 - 匹配
  • 如果-Modified-Since的

当他们看到清单文件已更新时。对于不使用应用程序缓存的浏览器,我希望它像往常一样缓存文件而不是在同一会话中向服务器发送多个请求。

这是可能的,还是有另一种解决方案?

感谢您的帮助。

0 个答案:

没有答案