我创建了一个动态网页,在主页上有三张滑动图片。我创建了另一个页面来更改主页的图像(滑动)。因此,当我提交第二个页面后,我编写了PHP代码返回到主页。但是图像没有更改,因为我的浏览器将该网页缓存在其缓存中。如果我手动删除缓存或重新启动浏览器,它就可以工作了。我如何在PHP编码中删除浏览器缓存?请给我一个解决方案。谢谢。
您还可以在图像URI中添加随机字符串:
<img src="myimage.png?r=12345" alt="">
<script src="myfile.js?version=1.0.0"></script>
浏览器即使在问号后面是参数,也会将整个字符串解释为文件路径。所以现在发生的情况是:下次更新文件时,在您网站上的脚本标签中更改数字(例如<script src="myfile.js?version=1.0.1"></script>
),每个用户的浏览器将看到文件已更改并抓取新副本。您不能清除缓存,但是您可以首先要求页面不进行缓存:
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
在您的页面中,您可以在PHP脚本的第一个问题之前添加这些行。通过这样做,您告诉浏览器不要缓存页面,并且每次都应该请求内容。
对于图片,您可以将以下行写入您的HTACCESS文件:
<FilesMatch "\.(jpg|png|gif)$">
Header set Cache-Control "no-cache, must-revalidate"
</FilesMatch>
你可以使用header()函数在PHP中禁用缓存,也可以为图像提供一个引用(imgurl.com/imagename.jpg?r=1234)。我推荐使用第二种方法。为什么?因为如果你使用PHP的header函数关闭整个页面的缓存,它只会减慢你的网站速度。所以最好为你的图片提供一个随机字符串。
尝试使用HTML缓存控制META标签:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 02 May 2015 21:00:00 GMT">
[+1]
- kapitan