5

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

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

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

4

3 回答 3

5

您所描述的称为缓存断路器,通常是随机字符串或附加到 url 的时间戳。当你引用你的图像时,像这样添加它:

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

这将导致一个如下所示的 url:

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

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

这个线程可能很有趣:How to force a web browser NOT to cache images

于 2012-12-18T19:20:38.800 回答
1

我认为使用标题比 url 技巧更好

<?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

于 2012-12-18T19:23:08.867 回答
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>
于 2012-12-18T19:21:32.057 回答