我使用PHP库生成一些图像。
有时浏览器不加载新生成的文件。
如何才能仅为我动态创建的图像禁用缓存?
注意:随着时间的推移,我必须为创建的图像使用相同的名称。
发布于 2009-04-08 11:45:33
对于这个问题,一种常见而简单的解决方案是为每个动态图像请求添加一个随机生成的查询字符串。
所以,举例来说-
<img src="image.png" />
会变成
<img src="image.png?dummy=8484744" />
或
<img src="image.png?dummy=371662" />
从web服务器的角度来看,访问相同的文件,但是从浏览器的角度来看,不能执行高速缓存。
随机数的生成既可以发生在提供页面时的服务器上(只要确保页面本身没有被缓存...),也可以发生在客户端(使用JavaScript)。
您将需要验证您的web服务器是否可以处理此技巧。
发布于 2009-04-08 05:54:40
浏览器缓存策略可以通过HTTP标头进行控制。记住,它们只是一个提示,真的。由于浏览器在这个(和任何其他)字段中非常不一致,您将需要几个头文件才能在一系列浏览器上获得所需的效果。
header ("Pragma-directive: no-cache");
header ("Cache-directive: no-cache");
header ("Cache-control: no-cache");
header ("Pragma: no-cache");
header ("Expires: 0");
发布于 2011-05-25 05:03:01
如果您需要使用javascript在浏览器中动态执行此操作,这里有一个示例...
<img id=graph alt=""
src="http://www.kitco.com/images/live/gold.gif"
/>
<script language="javascript" type="text/javascript">
var d = new Date();
document.getElementById("graph").src =
"http://www.kitco.com/images/live/gold.gif?ver=" +
d.getTime();
</script>
https://stackoverflow.com/questions/728616
复制相似问题