如何防止缓存图像?

How do I prevent caching an image?

我有一个使用 .htaccess 文件的虚拟随机图像:

#   .htaccess
<Files random.jpg>
    RewriteEngine On
    RewriteRule ^(.+)$ /random-image.php [QSA,L]
</Files>

和以下 PHP:

<?php
    //  random-image.php
    $images=glob("images/*.jpg");
    $image=imagecreatefromjpeg($images[array_rand($images)]);
    header('Content-Type: image/jpeg');
    imagejpeg($image);
?>

并在 HTML 中:

<img src="random.jpg">

这很好用,但是浏览器有一个讨厌的缓存图像的习惯,所以我总是得到相同的图像而不是新图像。

我知道我可以使用 JavaScript 将随机查询字符串附加到 src 属性的末尾,但这并不总是一个选项。

有没有办法在 PHP 文件或 .htaccess 文件中添加额外的 headers,告诉浏览器不要缓存图像并始终从服务器?

只需将此内部标记放入您的 .htaccess 文件中

Header set Cache-Control "max-age=0"