如何禁止浏览器缓存通过.htaccess和PHP实现的随机图片
解决方案
方案1:在PHP代码中添加缓存控制头(推荐)
直接修改random-image.php,在输出图片前添加禁止缓存的响应头即可,修改后的完整代码如下:
<?php // random-image.php $images=glob("images/*.jpg"); $image=imagecreatefromjpeg($images[array_rand($images)]); // 禁止缓存相关响应头 header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Expires: Thu, 19 Nov 1981 08:52:00 GMT"); header('Content-Type: image/jpeg'); imagejpeg($image); // 释放图片内存避免资源泄露 imagedestroy($image); ?>
该方案兼容性最好,不需要依赖服务端额外扩展。
方案2:通过.htaccess配置响应头
如果不想修改PHP代码,可以直接在现有.htaccess配置中追加头信息,修改后的配置如下:
# .htaccess <Files random.jpg> RewriteEngine On RewriteRule ^(.+)$ /random-image.php [QSA,L] # 禁止缓存头配置 Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0" Header set Pragma "no-cache" Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT" </Files>
使用该方案需要提前确认Apache环境已经开启mod_headers扩展,否则配置会报错。
两种方案任选其一即可生效,无需修改前端HTML引用代码。
内容的提问来源于stack exchange,提问作者Manngo
相关产品推荐
相关产品推荐

