使用PHP代码清除浏览器缓存记忆

3

我创建了一个动态网页,在主页上有三张滑动图片。我创建了另一个页面来更改主页的图像(滑动)。因此,当我提交第二个页面后,我编写了PHP代码返回到主页。但是图像没有更改,因为我的浏览器将该网页缓存在其缓存中。如果我手动删除缓存或重新启动浏览器,它就可以工作了。我如何在PHP编码中删除浏览器缓存?请给我一个解决方案。谢谢。

6个回答

5

您还可以在图像URI中添加随机字符串:

<img src="myimage.png?r=12345" alt="">

如果随机字符串每次重新加载主页面时都不同,浏览器将从服务器获取图像。

很棒的技巧,简单但有效!恰好是我需要的。谢谢![+1] - kapitan

4
有一个技巧可以使用。这个技巧是在脚本标签的文件名中添加一个参数/字符串,并在文件变更时更改它。 <script src="myfile.js?version=1.0.0"></script> 浏览器即使在问号后面是参数,也会将整个字符串解释为文件路径。所以现在发生的情况是:下次更新文件时,在您网站上的脚本标签中更改数字(例如<script src="myfile.js?version=1.0.1"></script>),每个用户的浏览器将看到文件已更改并抓取新副本。

3

您不能清除缓存,但是您可以首先要求页面不进行缓存:

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

这个问题在StackOverflow上已经被问过了,这个答案是从那里引用的,纯粹是为了给已经回答了这个问题的用户致谢。
之前的问题在这里:如何用PHP清除浏览器缓存? 或者,就像已经说过的那样,你可以使用META标签来做到这一点,但是你要求一个PHP解决方案,所以这里有一个:D
祝你好运。

1
如果您的文件经常更改,我建议您使用PHP发送以下标题:
header("Cache-Control: no-cache, must-revalidate");

在您的页面中,您可以在PHP脚本的第一个问题之前添加这些行。通过这样做,您告诉浏览器不要缓存页面,并且每次都应该请求内容。

对于图片,您可以将以下行写入您的HTACCESS文件:

<FilesMatch "\.(jpg|png|gif)$">
Header set Cache-Control "no-cache, must-revalidate"
</FilesMatch>

1

你可以使用header()函数在PHP中禁用缓存,也可以为图像提供一个引用(imgurl.com/imagename.jpg?r=1234)。我推荐使用第二种方法。为什么?因为如果你使用PHP的header函数关闭整个页面的缓存,它只会减慢你的网站速度。所以最好为你的图片提供一个随机字符串。


0

尝试使用HTML缓存控制META标签:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

或使用EXPIRES:
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 02 May 2015 21:00:00 GMT">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接