一个简单的 HTML 代码:
<img src="http://someaddr/image.php">
image.php 是一个脚本,它返回一个随机重定向到具有所有必要的无缓存标头的静态图像:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Location: http://someaddr/random_image_12345.jpg
问题:来回导航到此 HTML 页面时,Chrome(最新的 win/mac)不会重新验证 address http://someaddr/image.php
。
我尝试过使用重定向 302 和 303(在 RFC 中有更强的要求,它不应该被浏览器缓存)。这就像 IE、FireFox、Opera 中的魅力一样。他们总是刷新http://someaddr/image.php
。但 Chrome 没有。
我什至在 Chrome 中使用过开发人员工具,似乎在网络日志中它甚至没有显示任何尝试(缓存或不缓存) fetching http://someaddr/image.php
。网络日志仅显示一个已连接到http://someaddr/random_image_12345.jpg
(缓存)的连接。怎么这么破……
我知道将查询字符串放入图像源的天真/简单的解决方案:
<img src="http://someaddr/image.php?refresh={any random number or timestamp}">
但我不喜欢/不能使用这样的黑客。还有其他选择吗?