html – Chrome和Safari缓存302重定向
已经提出过各种各样的风味,但我还没有看到真正的答案.
我们有一个单独的图像服务,我们的网络应用程序用它来获取它的一些图像.图像服务经过了充分测试,运行正常.为了使其具体,我们的应用程序从domain.com提供. img元素的src元素是images.domain.com/ {imageId}.映像服务检索映像的URL,并发回该映像的HTTP 302重定向. 该应用程序允许用户更改图像.因此,用户5将图像A作为简档图像,并且决定通过上载图像B来改变它.当用户上载图像时,应用程序缓存被适当地无效并且数据库被更新.应用程序在POST后执行标准重定向,并且在更改其图像后用户重定向到的页面中的一个元素如下所示: <img src="example.domain.com/5"> 问题是Chrome从未调用example.domain.com/5来在初始重定向或常规重新加载页面时检索图像,它只是从浏览器缓存中提供图像A.对example.domain.com/5的独立调用正确返回图像B,并且硬刷新或清除Chrome的缓存迫使Chrome请求图像的src,这正确地返回图像B.请注意,我不是在讨论提供图像来自获得304 Not Modified响应后的缓存,我说的是Chrome决定不再访问img src而只返回图像A.另外,在img的src属性中添加一些独特的查询字符串可以解决问题,但这是一个黑客,我们宁愿不必这样做. 值得注意的是Firefox最初也在做同样的事情.最初响应中没有Cache Control标头.我们在响应头中添加了一个Cache Control:no-cache标头(并尝试了no-store),这修复了Firefox中的行为,但是Chrome和Safari仍然提供过时的缓存图像而不调用图像的src . 看起来这是Chromium(https://code.google.com/p/chromium/issues/detail?id=103458)中的一个长期存在的错误,据称大约6周前已经修复,但我们正在使用最新版本的Chrome. 我们已经查看了答案here和here但他们实际上没有回答这个问题. 根据第14.9.1 of RFC 2616条:
除非我们遗漏某些内容或做错了什么,否则Chrome(和Safari)似乎不遵守302重定向的无缓存标头的RFC行为?任何人以前都有这种经历或有任何见解? 解决方法
缓存控制:无存储
我遇到了你所描述的同样令人抓狂的问题(略有不同,因为它是一个缺少cookie重定向回登录页面),除了Safari之外,它在任何地方都有效. 无奈之下,我遇到了this open WebKit bug并看到了命运的评论(最后是一线希望):
添加了no-store到我的缓存控制头,没有更多问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |