PHP URL字符串,以避免浏览器缓存

时间:2012-12-18 19:12:56

标签: php caching

我的网站被设计成一个有趣的图片网站,当用户点击随机按钮时,同一页面上的PHP代码生成一个新的随机图片,这就是它应该如何工作。然而,我必须按F5按钮才能获得新图像。

我正在阅读另一个问题,即人们使用获取日期并在链接末尾生成时间查询字符串以避免浏览器缓存,但是我无法弄清楚它的生命。

我对php不是很好所以请说好像我只知道基本的网页结构。谢谢!

3 个答案:

答案 0 :(得分:5)

您所描述的内容称为缓存断路器,通常是随机字符串或附加到网址的时间戳。当您引用图像时,请将其添加如下:

echo get_random_image_url() . '?' . time();

这将导致网址如下所示:

http://your.server.com/random.jpg?1355862360

注意:get_random_image_url只是一个例子,但我相信你明白了。

此主题可能很有用:How to force a web browser NOT to cache images

答案 1 :(得分:1)

我认为使用标题比网址技巧

更好
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

http://php.net/manual/en/function.header.php

答案 2 :(得分:0)

很容易解决:例如, 请检查以下两个链接:

http://cdn.arstechnica.net/wp-content/uploads/2012/10/06_Place_20773_1_Mis.jpg

http://cdn.arstechnica.net/wp-content/uploads/2012/10/06_Place_20773_1_Mis.jpg?randomValue

这两个链接都将打开相同的图像。

这是你的解决方案!您必须在图像文件名末尾添加一个随机值:

image.png?<?php echo someRandom();?>

此社区或Google提供了一种编写随机值的函数的方法。

还有使用的解决方案,以下是

<img id="funny" src="scripts/php_rand_image.php" />
<a href="javascript:changeImage('funny')">Get another image</a>
<script>
function changeImage(ob){
image = document.getElementById(ob)
d = new Date();
image.src = image.src+'?'+d.getTime();
}
</script>