防止浏览器缓存的图像

时间:2013-09-10 11:03:35

标签: php html caching

我正在开发一个Web应用程序来转换用户上传的图像。 当用户更改图像时,它将在服务器中以其他名称保存,并再次提供给客户端,如img标记。 回到上一张图片时遇到问题。删除实际图像,新图像是之前的图像。但是当用户再次更改时,显示的图像不是新图像,而是返回之前删除的图像。但是,显示的图像不存在。我猜它是由浏览器缓存的,但不知道如何防止这种情况。

示例:

$image1 = imagefirst.jpg
$image2 = imagechanged.jpg

//Going back:

$image3 = imagefirst.jpg
//imagechanged.jpg is deleted

//change again the image
$image4 = imagechanged.jpg

//serve to the client
<img src="imagefirst.jpg">    

//the image shown isn't the new one saved in the server, but the image deleted previously.

2 个答案:

答案 0 :(得分:2)

只需在图像的src属性中添加随机数:

<!-- 759293475438 generated randomly each time -->
<img src='imagefirst.jpg?759293475438'/>

- 为此,您可以在PHP中使用mt_rand()

答案 1 :(得分:2)

此问题的一个简单解决方案是向图像添加随机字符串,以强制浏览器每次都请求新图像。您可以使用uniqid()rand()time()来实现此目的:

echo "<img src='imagefirst.jpg?version=".time()."'/>";        

这将产生类似于:

的输出
<img src='imagefirst.jpg?version=1378811671' />

由于查询字符串是唯一的,因此图像看起来与浏览器不同。