作者:MK2 来源:博客园   酷勤网收集 2008-04-20

摘要
  Last-Modified得到支持,将会为我们双方都节省许多带宽的。与Last-Modified类似的,就是Etag头。静态的文件通过时间戳来确定是否发生改变,对于动态的文件应该可以通过特定算法(例如下载中使用的MD5验证)计算是否发生改变!

今天在测试读取RSS时,使用到自己在博客园的RSS链接来做测试,发现使用Last-Modified方式优化时,RSS每次返回都会更新Last-Modified。

以下是用Fiddler对几次请求的截获结果:

第一次请求,客户端不会添加头If-Modified-Since头,这是肯定的。

image

服务器端返回了Last-Modified,并且响应代码是200,这样客户端可以在下次请求中使用。

 

第二次请求,客户端根据上次请求返回的Last-Modified,添加If-Modified-Since头。

image

服务器返回结果并不是我们预料中的304,却依然是200,也就是说全部内容又重新下载了一遍,If-Modified-Since请求头并未起作用。原因是什么?看看服务器返回的Last-Modified就知道,RSS内容并未更新,长度还是67672,本应该Last-Modified与第一次的Last-Modified相等才对的。

 

再进行一次测试:

image

结果和上面一样,Last-Modified有变化了。

 

呵呵,Last-Modified得到支持,将会为我们双方都节省许多带宽的。与Last-Modified类似的,就是Etag头。想详细了解什么是Last-Modified和Etag,可参考:如何利用客户端缓存对网站进行优化?

评论  

#1楼 2008-04-19 17:52 | kuafoo
对于静态文件 是由IIS来检测文件日期来返回的 动态文件我想应该是程序自己检测 IIS检测的话 每次都有更新
 
#3楼 2008-04-19 18:24 | 蛙蛙池塘
有了这个头,直接先发个head请求就可以知道RSS有没有更新了。
 
#4楼 2008-04-19 19:01 | wingoo
关于rss是否修改是根据什么来判定的?
缓存过期自动更改?还是说专门有个记录表来记录??
 
#5楼 2008-04-19 20:50 | Kingthy
主要是博客园的RSS是动态的并不是静态的XML文件.所以是不处理Last-Modified的.当然也可以做到,但这样做就要做很多处理.也即是有没有内容改变过.
 
#6楼 2008-04-20 02:20 | 镜涛
静态的文件通过时间戳来确定是否发生改变,对于动态的文件应该可以通过特定算法(例如下载中使用的MD5验证)计算是否发生改变!

来自:http://www.cnblogs.com/fengmk2/archive/2008/04/19/1161265.html

分类: .NET技术 网页设计 交互设计



关于酷勤 | 联系方式 | 免责声明 | 友情链接