2011-03-17 153 views
0

因此,假设我有一大堆图像在一个页面,然后我去一个不同的网址,具有完全相同的图像和布局,因为url是不同的浏览器将重新加载所有图像,布局等并不会显示他们从缓存,即使他们是完全相同的图像/布局....控制浏览器缓存

有没有办法来防止这种情况,并控制浏览器缓存的东西只使用JavaScript,PHP或HTML的方式?

编辑/添加

也有什么有趣的是,首先我有相同的网站的两个副本,一个在我的本地服务器和远程主机服务器上的另一个.....

本地服务器上的缓存完全缓存并且没有图像重新出现,而如果我访问远程服务器上的图像,则图像会尝试重新出现....尽管文件等实际上是虚拟的本地和远程服务器之间相同...

编辑/添加

另一个有趣的事情....缓存将在IE和Chrome浏览器甚至是远程服务器,但由于某些原因,它会在Firefox搞砸....

在另一方面,一个在本地服务器会工作,即使用于Firefox

+0

这里有一个很好的链接,以避免图像缓存http://stackoverflow.com/questions/165253/javascript-how-to-force-image-not-to-use-browser-cache – 2011-03-17 20:40:03

+1

如果图像来自相同的地方,除非您的网络服务器发送Cache-Control标题以及图像,否则无论URL如何,都必须从浏览器缓存中加载它们。你确定他们没有被缓存吗?你如何测试这个? – glomad 2011-03-17 20:40:33

+0

不知道你的意思是“布局”,但如果你的意思是HTML,那么当你转到不同的URL时,它不会被缓存。对此你没有太多可以做的。 – glomad 2011-03-17 20:41:42

回答

1

会要求浏览器缓存使用头不由

header("Cache-Control: private, max-age=5400, pre-check=5400"); 
    header("Pragma: private"); 
    header("Expires: " . gmdate("D, d M Y H:i:s"). " GMT"); 

有一个很好的网站,以检查返回头http://redbot.org尝试,它可以帮助加上theres http://www.mnot.net/cache_docs/你可能想看看,如果你不求你的答案。

+0

nope似乎没有工作 – 2011-03-17 21:07:42

+0

注意我改变标题(“过期:”。gmdate(“D,d MYH:我:s”)) 。 “ 格林威治标准时间”); ,因为那个redbot发现了一个错误,原来的Expires: – 2011-03-17 21:29:31

+0

是啊,它仍然试图重新出现 – 2011-03-17 21:33:51

1

形象,如果他们有一个固定的目录/images/image1.jpg不会重新牵强,除非你已经设置你的头以no-cache。它不应该重新下载其他页面上的所有图像。

使用各种工具对此进行测试,例如使用Firefox的Firebug或Safari/Chrome的Webkit Web开发人员跟踪。它会通知您它是否被缓存或重新下载。

希望这是你的要求......

+0

萤火虫会显示一些图像的加载栏是浅灰色的(我猜想图像是从缓存加载的)........的东西是...图像仍然会尝试重新出现(即)在开始时,图像占位符上没有任何内容,然后图像开始缓慢显示,然后显示,而在我看过的图像甚至不会尝试重现的网站中......它就在那里,浏览器只会加载 – 2011-03-17 20:53:20

+0

不同的内容,即使你去一个不同的网址....所以感觉就像你甚至没有离开过这个页面,因为所有在同一个地方的图像仍然存在,甚至不会重新出现.....有没有一种方法可以专门完成这个 – 2011-03-17 20:54:09

+0

是否将网址更改为文件? (即:相对链接vs静态链接?) – Jakub 2011-03-17 20:55:41