热搜:NVER node 开发 php

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

2024-11-28 22:30:01
高分求教HTTP缓存的问题!请大家帮忙!_html/css_WEB-ITnose

aa



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”这个参数,所以它也没有跟服务器匹对最后修改时间。

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

有人能帮帮忙吗?