欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

高分求教HTTP缓存的问题!请大家帮忙!_html/css_WEB-ITnose

程序员文章站 2022-05-04 08:19:39
...

aa

高分求教HTTP缓存的问题!请大家帮忙!_html/css_WEB-ITnose高分求教HTTP缓存的问题!请大家帮忙!_html/css_WEB-ITnose


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响应头信息中设置呢?


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


回复讨论(解决方案)

向服务器发送请求是确认缓存中是不是最新的可用的。

向服务器发送请求是确认缓存中是不是最新的可用的。
你是在回答我的第一个问题吗?
那为什么在IE下用httpwatch看,是没有发起请求的,而且即便我把页面代码改了,用回车看,还是跟没有改过一样,说明它没有确认缓存中是不是最新可用的。
好像只有请求图片什么的,才查看缓存中是不是最新的,而页面缓存不查看。

你可以在请求的时候传一个时间参数这样就能跳过浏览器缓存了

楼主,难道你觉得缓存以后连一个http都没有嘛?这当然不可能,它肯定是要访问服务器,但这个时候页面内容不是从服务器返回的,而是服务器告诉浏览器,你用自己的缓存吧,于是。。

楼主,难道你觉得缓存以后连一个http都没有嘛?这当然不可能,它肯定是要访问服务器,但这个时候页面内容不是从服务器返回的,而是服务器告诉浏览器,你用自己的缓存吧,于是。。
但是用IE的httpwatch抓包看,就是直接读的缓存,没有向服务器发送任何信息。应该是只有缓存图片什么的才发个请求吧,然后判断最后更新时间是不是和服务器上的相同。页面应该不用。

浏览器会把缓存的最后更新时间信息发送给服务器,缓存是否可用应该是服务器返回给浏览器的。

浏览器会把缓存的最后更新时间信息发送给服务器,缓存是否可用应该是服务器返回给浏览器的。
首先谢谢你回答我的问题~但麻烦大家仔细看看我的问题吧。。。我上面已经说了,我这个问的是页面缓存的问题,不是图片什么的。这个页面被缓存时发起的请求里压根就没有“If-Modified-Since”这个参数,所以它也没有跟服务器匹对最后修改时间。

恳请各位仔细读下我的问题,多谢!多谢!!!

有人能帮帮忙吗?