作者:MK2 来源:博客园 酷勤网收集 2008-04-20
摘要
Last-Modified得到支持,将会为我们双方都节省许多带宽的。与Last-Modified类似的,就是Etag头。静态的文件通过时间戳来确定是否发生改变,对于动态的文件应该可以通过特定算法(例如下载中使用的MD5验证)计算是否发生改变!
今天在测试读取RSS时,使用到自己在博客园的RSS链接来做测试,发现使用Last-Modified方式优化时,RSS每次返回都会更新Last-Modified。
以下是用Fiddler对几次请求的截获结果:
第一次请求,客户端不会添加头If-Modified-Since头,这是肯定的。
服务器端返回了Last-Modified,并且响应代码是200,这样客户端可以在下次请求中使用。
第二次请求,客户端根据上次请求返回的Last-Modified,添加If-Modified-Since头。
服务器返回结果并不是我们预料中的304,却依然是200,也就是说全部内容又重新下载了一遍,If-Modified-Since请求头并未起作用。原因是什么?看看服务器返回的Last-Modified就知道,RSS内容并未更新,长度还是67672,本应该Last-Modified与第一次的Last-Modified相等才对的。
再进行一次测试:
结果和上面一样,Last-Modified有变化了。
呵呵,Last-Modified得到支持,将会为我们双方都节省许多带宽的。与Last-Modified类似的,就是Etag头。想详细了解什么是Last-Modified和Etag,可参考:如何利用客户端缓存对网站进行优化?
#1楼 2008-04-19 17:52 | kuafoo
对于静态文件 是由IIS来检测文件日期来返回的 动态文件我想应该是程序自己检测 IIS检测的话 每次都有更新
有了这个头,直接先发个head请求就可以知道RSS有没有更新了。
关于rss是否修改是根据什么来判定的?
缓存过期自动更改?还是说专门有个记录表来记录??
缓存过期自动更改?还是说专门有个记录表来记录??
主要是博客园的RSS是动态的并不是静态的XML文件.所以是不处理Last-Modified的.当然也可以做到,但这样做就要做很多处理.也即是有没有内容改变过.
静态的文件通过时间戳来确定是否发生改变,对于动态的文件应该可以通过特定算法(例如下载中使用的MD5验证)计算是否发生改变!
来自:http://www.cnblogs.com/fengmk2/archive/2008/04/19/1161265.html




