我发现大多数解决方案都是在图像链接后添加“?+ time()”以强制浏览器每次下载图像,但是,如果图像没有真正的变化,这似乎不是理想的解决方案。
.ajax中的 ifModified 可以提供帮助吗?
欢迎任何想法,谢谢!
编辑:
有没有办法在图像墨水上添加“?+ ...”?
并考虑图像可能是远程资源。
答案 0 :(得分:1)
您可以将图像的时间戳和文件大小(组合)添加为查询字符串(问号后面的内容)
基本上该文件的任何元数据都可用于此,也见过md5()实现,但我不确定它的扩展程度有多好。
这是一种没有数据库的简单方法。
答案 1 :(得分:1)
理想情况是,您附加文件修改时间(在服务器上)或** PHP filemtime()**时间戳。这样,只有当您更改服务器上的图像时,时间戳才会更改,所有用户立即(在下次加载时)会获得新版本的图像。
但是你必须使用服务器端语言,比如PHP。谷歌“filemtime()”了解更多信息。
代表性例子:
<img src="image.png?<?php echo filemtime('image.png');?>" />
或:
<?php
echo '<img src="image.png?'.filemtime('image.png').'" />';
?>
你也可以写一个函数为你做这个:
function image($file) {
return $file.'?'.filemtime($file);
}
echo '<img src="'.image('image.png').'" />';
答案 2 :(得分:0)
还有另一种解决方案:
您也可以在未来一年设置Expires标头,如下所示:
到期日:2011年9月15日星期四20:00:00 GMT
这意味着浏览器会尝试将图像缓存一年,然后再次从服务器请求它。但如果你在那段时间改变图像,那可能会很糟糕。然后用户必须进行硬刷新(Control + F5)以强制刷新。保持我的第一个解决方案,甚至是更好的,同时使用它们。