将浏览器重定向到另一个位置并强制刷新

时间:2011-02-17 18:54:02

标签: http caching http-headers http-caching

我想请您提供有关浏览器缓存失效的建议。

假设我们有一个索引页面,该页面通过http标头返回给客户端:

Cache-Control: public, max-age=31534761
Expires: Fri, 17 Feb 2012 18:22:04 GMT
Last-Modified: Thu, 17 Feb 2011 18:22:04 GMT
Vary: Accept-Encoding

如果用户再次尝试访问该索引页面,浏览器很可能甚至不会向服务器发送请求 - 它只会向用户显示该页面的缓存版本。

我的问题是:是否可以创建一个Web资源(例如在uri / invalidateIndex),这样当用户点击该资源时,他会以强制浏览器使其缓存无效的方式重定向到索引页面。问服务器新鲜内容?

2 个答案:

答案 0 :(得分:1)

我对自己的项目有类似的问题,所以我有一些建议,如果你还没有找到解决方案......

  1. 我已经看到这是一种jQuery强制ajax请求不被缓存的方式:它使用随机值或名称向URL添加HTTP参数,以便每个新请求必须具有不同的URL和浏览器然后从不使用缓存。实际上,您可以将/ invalidateIndex URI重定向到此类URL。问题当然是浏览器实际上从未使原始索引URL无效,并且浏览器将始终重新请求您的索引。

  2. 您当然可以使用较小的max-age更改http标头Cache-Control,例如减少到一小时,以便每小时左右缓存无效

  3. 此外,您可以使用ETags,其中缓存的数据具有将随每个请求一起发送的标记,实质上是询问服务器索引是否已更改。

    < / LI>

    2,3我甚至可以合并......

答案 1 :(得分:-1)

没有直接的方法要求浏览器清除其特定文件的缓存,但如果您只有少数这样的系统和足够的带宽,您可以尝试在同一协议,主机和端口,以便缓存开始驱逐旧对象。例如,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=81640