2014-03-28 29 views
0

Firefox不重新加载图像具有相同的网址,直到刷新。如何强制铬不重新加载图像具有相同的网址,直到页面刷新,就像firefox

$("#a").click(function(){$("#img").attr("src","img.php?id=3");}); 
<img id="img" src="img.php?id=3"> 

//the two line above are in the same html page.And when the html page is loaded 
// in the browser, i open a new tab and go to the php page that includes 
//the line below. 

mysql_query("update images set data=$data where id=3");//changing the image here 

然后我回去的HTML页面,然后点击#A,Firefox中的旧图像被显示,如果与ID = 2的图像被改变或没有,除非HTML页面刷新它不要求MySQL的。但是在chrome中显示新的,已更改的图像。它会再次询问mysql,不关心url是否仍然相同。

我希望Chrome的行为像firefox.Tried设置过期,最后修改等标题为没有缓存,但它的工作方式不同。就我感觉它没有缓存什么即时通讯寻找。反正,这对我来说是一个非常重要的问题,我将不胜感激任何帮助。

+1

你可以发布您的img.php和第一页的全貌,我没有得到你想要的东西做 –

回答

1

使用此;

<script> 
var randomNumber = Math.random(); 

$("#a").click(function(){$("#img").attr("src","img.php?id=3&rand=" + randomNumber);}); 
</script> 
<img id="img" src="img.php?id=3&rand="<script>document.write(randomNumber)</script>> 

这将始终生成不同的网址。您不需要在后端处理rand php

+0

OP想要强制缓存图像,而不是为了避免它 –

+0

a.WOLFF是正确的我想缓存或不重新载入任何你称之为 – user2624687

+0

HüseyinBABAL你有一个理解问题 – user2624687

0

浏览器行为对个人浏览器是唯一的。有些人已经设置了他们的浏览器来保存历史记录,因此缓存,其他人没有。

可以鼓励或在这里看到在页面上设置标头劝阻缓存:

http://www.php.net/manual/en/httpresponse.setcachecontrol.php

注意,这是由本地浏览器的设置来改写。

此外,通过创建一个URL,不包括查询字符串如:

http://www.mydomain.com/myimage3/http://www.mydomain.com/image.php?id=3

你“可能”有更好的运气鼓励缓存的浏览器,虽然我不再是就像曾经那样。

(框架如Zend和笨提供的网址结构,而不在查询字符串更易于部署格式)

+0

谢谢盐,我已经尝试过头,但他们的工作方式不同(只是第一次加载,加​​载页面后,如果我点击#A它仍然问问如果图像改变了MySQL)。但我会尝试没有像“http://www.mydomain.com/myimage3 /“ – user2624687

+0

s saltman我试过你的建议,但没有工作铬仍然改变图片,你有任何其他的建议 – user2624687

+0

有一些JavaScript例程来“预先加载图像”,但这有点超出了我的技能。然而,我不确定他们是否会缓存图片,但他们会在页面的其他部分加载图片,这可能会鼓励缓存,但可能不会。 – ssaltman

相关问题