2012-12-18 79 views
5

我的网站被设计成一个有趣的图片网站,当用户点击任意按钮,在同一页上的PHP代码生成一个新的随机图片,这是它是如何工作的。然而,我必须按F5按钮才能获得新图像。PHP URL字符串,以避免浏览器缓存

我正在读的另一个问题是人们使用get日期,并获得在链路的末端产生的,以避免浏览器缓存时间查询字符串,但是我无法弄清楚了我的生活。

我不是很好用PHP,所以请说,如果我只知道基本的网页结构。谢谢!

+1

学会更好地去设置头更好,比使用那'欺骗' – 2012-12-18 19:19:51

回答

4

你所描述被称为缓存断路器,通常是一个随机字符串或附加到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

+0

其实际引用了一个PHP文件,从我的托管中抽取一个随机有趣的图像。我很抱歉,我对CSS和html非常好,但我刚刚在几个月前开始学习。任何更多的帮助将不胜感激。 –

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();?> 

这个社区或谷歌的方式来写gemnerates随机值的函数。

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

<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> 
+0

我尝试你的反应,因为它似乎是最简单的,谢谢你,但是当我把在网址的结尾,例如:在index.php文件的页面不再显示“”。任何反馈? –

+0

您必须注意:someRandom()是您必须编写的自定义函数。 someRandom()应该作为图片url的后缀。另一方面,我建议使用JavaScript依赖的解决方案。 – SaidbakR

0

我想用头比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

+0

太好了,我可以将它放在网页结构的任何位置吗?恩。头,身体 –