日期:2014-05-17  浏览次数:20685 次

高分求教HTTP缓存的问题!!!请大家帮忙!!!
HTML code

<h1>aa</h1>
<img src="1.jpg" width="100" />
<img src="2.jpg" width="100" />



1、
为了验证读取这个页面是不是从缓存中读取,我进行如下操作:
第一次正常打开这个页面。然后第二次,在地址栏按回车(不是刷新)
我在IE用httpwatch看,确实是从缓存中读的文件,而且没有向服务器端发送HTTP请求


我在FireFox下用FireBug看,应该也是从缓存中读取的文件,因为这个页面只有了一个HTTP请求(第一次是3个)。这次请求里有HTTP请求头和相应头。
但是我的问题是,它为什么还会发起这个请求呢?不是应该直接从本地读取文件吗?


2、
为了使这个文件禁用缓存,我做了如下设置:
Expires: -1
Cache-Control: no-cache
pragma: no-cache

用IE看,确实没有从缓存中读取文件,而是发起了一个HTTP请求,而且返回了200。但是我的问题是,如果没有从缓存中读这个文件,那它浏览器应该向服务器发送3次请求才对啊?即便图片被缓存,也应该发起请求返回304码以后,再从本地读啊。为什么它只发起了一次呢???


3、
浏览器一般默认缓存多久呢?如何在HTTP响应头信息中设置呢?


本人菜鸟~打这么多不容易,还请各位高手仔细读下我的问题,多谢多谢!!!

------解决方案--------------------
向服务器发送请求是确认缓存中是不是最新的可用的。
------解决方案--------------------
你可以在请求的时候传一个时间参数这样就能跳过浏览器缓存了
------解决方案--------------------
楼主,难道你觉得缓存以后连一个http都没有嘛?这当然不可能,它肯定是要访问服务器,但这个时候页面内容不是从服务器返回的,而是服务器告诉浏览器,你用自己的缓存吧,于是。。
------解决方案--------------------
浏览器会把缓存的最后更新时间信息发送给服务器,缓存是否可用应该是服务器返回给浏览器的。