在CSDN的论坛看到有人讨论,自己做了一个简单的小实验,呵呵。这里我们需要知道HTTP的请求的一些知识。访问网站是需要DNS解析的。为什么,不解析直接打开网站的,这个就要研究浏览器的一些机制了。这个是需要去深入研究的。一些细节的东西我也没有详细提到,感兴趣的大家可以自己找一下相关资料。呵呵!我的回答如下。这里我也就不截图了。
首先我做了一个简单的实验,首先访问hao123,加载完毕后,我断开网络,然后刷新,hao123可以访问,然后我关掉浏览器,然后重新打开,输入hao123网址,依然可以访问。然后我把缓存清楚掉,刷新,显示找不到网页。这里也就确定了hao123使用了缓存技术。那么接下来,我又重复步骤,使用chrome浏览器测试,发现断网后访问不了。好了,那么既然使用了缓存,那么为什么别的站不可以?好,这里我们进行抓包进行测试,开启wsockexpert,进行抓包,那么我们抓到收到的数据包。返回的是下面的结果,
HTTP/1.1 200 OK
Content-Type: image/gif
ETag: “2205757071”
Accept-Ranges: bytes
Last-Modified: Tue, 18 Jan 2011 06:39:02 GMT
Expires: Thu, 22 Mar 2012 12:00:00 GMT
Cache-Control: max-age=31104000
Content-Length: 43
Date: Mon, 28 Mar 2011 12:00:00 GMT
Server: lighttpd
一下省略….
我们可以看到
Expires: Thu, 22 Mar 2012 12:00:00 GMT
Cache-Control: max-age=31104000
Date: Mon, 28 Mar 2011 12:00:00 GMT
Expires指示了缓存的过期时间。而这个过期时间是 Date + max-age 而得到的。Max-age是个时间长度。
这里的实现是通过服务器端进行配置,当然,实现这样效果也跟浏览器的缓存机制有关。
我们可以通过设置apache的选项来实现这样的效果。
##APACHE服务的内容过期设置##
Apache配置摘录及解释
i. 过期相关设置
LoadModule headers_module modules/mod_headers.so
#Load 修改header的模块。
LoadModule expires_module modules/mod_expires.so
#Load 设定过期header的模块。
Header append Via: CCN-BJ-4-502
#增加一个Via header,值配置成设备的hostname。
KeepAliveTimeout 60
#设置连接的保持时间为60秒。
ExpiresActive On
#启用过期header功能。
ExpiresDefault A604800
#缺省过期时间为“访问后的604800秒”
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresByType text/html A300
#text/html类型文件的过期设置为“访问后的300秒”
ExpiresByType text/css A259200
#text/css类型文件的过期设置为“访问后的259200秒”
ExpiresByType application/x-javascript A300
# application/x-javascript类型文件的过期设置为“访问后的300秒”
ExpiresByType image/gif A2592000
#image/gif类型文件的过期设置为“访问后的2592000秒”
ExpiresByType application/x-shockwave-flash A2592000
# application/x-shockwave-flash类型文件的过期设置为“访问后的2592000秒”
上述配置文件中load的两个模块:mod_headers.so 和mod_expires.so 可以让Apache具有对header的一些定制功能。
ExpiresByType: 表示按照文件类型-MIME-TYPE设定过期策略;
A300: 表示在Access后300秒后过期;
ExpiresByType text/css A2592000: 表示Mime type是text/css的文件,在Access后2592000秒过期。
ExpiresDefault A604800: 表示除了单独制定的文件类型等过期策略外的其他内容,按照这个缺省的策略设定:访问后604800秒过期。
这样就可以实现了。
当然在IIS里也是可以实现,在我的xp的iis下,右击站点,选择属性,然后在http头里就可以看到设置HTTP头的一些信息里。可以启用内容过期等设置。