2011-09-04 149 views
4

我们最近开始使用新的CMS解决方案。然而,我们并没有意识到,默认情况下,这个解决方案不会向HTML页面添加无缓存头等。远程清除IE缓存

虽然我们现在已经解决了这个问题,但使用IE浏览器的访问者尤其拥有大量HTML页面的缓存(包括对旧CSS和JS文件的引用)。

在上线后的第一个月内访问该网站的用户是否存在缓存清除方法?由于我担心我们无法成功地推进我们的设计和JS功能,因为拥有旧缓存版本的用户。

+0

任何特定版本或全部? –

+0

我至少关心IE7和8 – isNaN1247

回答

3

请求页面通常返回一个Last-Modified标题?这是破解我有任何经验的缓存的唯一可靠方法。

大多数浏览器会发送If-Unmodified-Since请求标头,如果他们正在缓存某些内容(除非此CMS上的默认缓存行为是设置显式缓存过期日期,这将非常不寻常)。因此,您所要做的就是在响应中发出Last-Modified:[date you added no-cache headers]标头,并且正确运行的HTTP服务器将向客户端发送完整更新的HTML页面。

Correct format can be found in the HTTP protocol.

+0

虽然不完全是我的问题,但它确实让我思考 - 我发现我的问题是我的'Cache-Control'头部被设置为'no-cache'......问题是我们的办公室(以及我们的大部分客户端)都在代理之后 - 我只是改变了'Cache控制'到'私人,最大年龄= 0'。我们还将'Expires'设为'-1'。 – isNaN1247

1

假设有一个中央URL生成函数,请跟踪它并始终将?_version=2(或&_version=2,如果URL中有问号)追加到所有URL。

这对您的Web应用程序没有任何影响(除非它使用_version GET字段),而是模拟更改的URL所有链接的资源。由于始终会请求初始URL(例如,/),这将使任何浏览器重新下载所有资源。

+1

虽然这种萧条可以用于CSS和JS等文件,但如果每次请求都重新下载HTML。 IE(我已经测试过6-8)似乎没有重新请求它已经缓存的HTML。也许它是一个'后台代理'问题,但我已经知道IE缓存像Jon Skeet的大脑 - 所以我想它更多的是一个浏览器问题 – isNaN1247

+0

PS - 也尝试了IIS重写规则 - 追加查询字符串。但是因为浏览器没有重新请求URL的标题,所以它没有看到'Location'标题做一个重定向。 PS - 如果你的URL使用查询参数 - 一定要更新Google/Bing网站管理员工具,以便它们不会列出你的查询字符串附加的URL :) – isNaN1247