如何从服务器而不是缓存加载图像?

How to load image from the server rather than the cache?

我的网站上有一些图片会不时更改。

问题是浏览器从缓存中加载了旧图像。

如何让浏览器始终从服务器而不是缓存加载图像?

你可以做的是在 src="img.jpg" 上使用一种版本控制,并使用这样的

  <img src="img.jpg?12354636512">

12354636512 这个数字应该是不同的,所以你可以使用当前时间,例如将这些独特的版本添加到你的图像 url。浏览器会认为这与它已经下载到临时文件的内容不同,并会再次请求它。

您可以更改图像的 src 以包含无用的随机数:

EDIT: use a current timestamp instead to ensure it's never the same, but basically do the same thing.

var imgs = document.getElementsByClassName('yourimageclassname');

for (var i = 0; i < imgs.length; i++) {
  var num = Math.random();
  imgs[i].src = imgs[i].src + '?' + num;
}

document.getElementById('result').value = imgs[0].src;
<input type="text" id="result" style="width:100%;" />

<img class="yourimageclassname" src="http://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" />

这取决于您使用的网络服务器,nginx、apache2、node...

在此 Web 服务器的配置中,只需为图像(png、jpg)设置一个控件。 Nginx:

location ~* \.(js|css)$ {
        expires 1d;
    }

一个小的变通方法是每次在图像上附加一个新字符串(基于时间),这样浏览器就会将图像视为新图像:<img src="picture.jpg?20130910043254">