提升网站性能 设置合理的cache时间(2)

http://www.itjxue.com  2015-07-19 16:30  来源:未知  点击次数: 

三.我划分的3个刷新级别

名词解释 全新请求: url产生了变化,浏览器会把他当一个新的资源(发起新的请求中不带If-Modified-Since)。

更正:在firefox后来的版本中对此做了改进,倾向于更多的使用cache,曾经访问过的都会尽量捎带If-Modified-Since头。这些表现和IE一致。修改部分用红色标出。(最后修改时间 2009.12.07)

注: sports.sinajs.cn 在IE下的表现存在一个小bug,由于不是使用的strncpy,导致IE下难以返回304,

需要修改一行代码,把比较字符串长度设置为29即可解决。不过目前本人已不在职,难以修改。

情况一 FF 捎带的头: If-Modified-Since Mon, 07 Dec 2009 10:54:43 GMT

情况二 IE 捎带的头: If-Modified-Since Mon, 07 Dec 2009 10:54:43 GMT; length=6

1,在地址栏中输入http://sports.sinajs.cn/today.js?maxage=11地址按回车。重复n次,直到cache时间11秒过去后,才发起请求,这个请求会带If-Modified-Since。

2,按F5刷新。 在你发起一个全新的请求以后,然后多次按F5都会产生一个带If-Modified-Since的请求。

3, ctrl+F5 ,总会发起一个全新的请求。

下面是按F5刷新的例子演示: http://sports.sinajs.cn/today.js?maxage=11

( 如果这个值大于浏览器最大cache时间maxage,将以浏览器最大cache为准)

发起一个全新请求

GET /today.js?maxage=11 HTTP/1.1

Host: sports.sinajs.cn

Connection: keep-alive

HTTP/1.x 200 OK

Server: Cloudia

Last-Modified: Mon, 24 Nov 2008 11:03:02 GMT

Cache-Control: max-age=11 (浏览器会cache这个页面内容,然后将cache过期时间设置为当前时间+11秒)

Content-Length: 312

Connection: Keep-Alive

按F5刷新

GET /today.js?maxage=11 HTTP/1.1

Host:sports.sinajs.cn

Connection: keep-alive

If-Modified-Since: Mon, 24 Nov 2008 11:03:02 GMT (按F5刷新,If-Modified-Since将上次服务器传过来的Last-Modified时间带过来)

Cache-Control: max-age=0

HTTP/1.x 304 Not Modified

Server: Cloudia

Connection: Keep-Alive

Cache-Control: max-age=11 (这个max-age有些多余,浏览器发现Not Modified,将使用本地cache数据,但不会重新设置本地过期时间)

继续按F5刷新n次……

这11秒内未产生http请求。直到11秒过去了……

按F5刷新

GET /today.js?maxage=11 HTTP/1.1

Host: sports.sinajs.cn

Connection: keep-alive

If-Modified-Since: Mon, 24 Nov 2008 11:03:02 GMT (多次按F5都会产生一个带If-Modified-Since的请求)

Cache-Control:max-age=0

HTTP/1.x 304 Not Modified

Server:Cloudia

Connection: Keep-Alive

Cache-Control: max-age=11

按F5刷新

GET /today.js?maxage=11 HTTP/1.1

Host: sports.sinajs.cn

Connection: keep-alive

If-Modified-Since: Mon, 24 Nov 2008 11:03:02 GMT (同上 。..)

Cache-Control:max-age=0

HTTP/1.x 304 Not Modified

Server: Cloudia

Connection: Keep-Alive

Cache-Control: max-age=11

(责任编辑:IT教学网)

更多