注册
找回密码
登录
ChinaonRails
关于 ChinaonRails
ChinaonRails 首页
最新主题
最新被回复主题
最新无回复主题
登录
注册
找回密码
网站
开发工具
工作
站务
测试
MySQL
他山之石
样式表
JavaScript
创建新主题
Ruby on Rails
有问有答
插件
酷站列表
Rails
新手上路
Tips
顾问团队
View
创建新主题
架构
服务器架构
性能
部署
Scaling
创建新主题
培训
公开课
上海活动
北京培训
创建新主题
敏捷
书籍
小程序
Ruby
JRuby
DSL
XRuby
Erlang
Hackathon
创建新主题
其他
畅谈
发现
扎营
商业
创建新主题
工具
搜索
参考文档搜索
HTML2UBB
Shuffle 首页
Remix 首页
切换语言
English
Deutsch
中文
Google Custom Search
Web
ChinaonRails
搜索
RSS
最新无回复主题
最强主题排行
会员登录历史
注册会员总数
1131
讨论
9895
收藏
1960
据点
217
印迹
689
博客
40
Developer Zone
Technorati Profile
Hosted by
ChinaonRails
>
架构
>
性能
> 最新的Edge Rails里用etags提高性能
bd7lx
深圳
58.189%
disconnected
登录后回复主题
|
跳到回复
最新的Edge Rails里用etags提高性能
... by bd7lx ... 3 月 21 天前 ... 131 次点击
http://www.tbray.org/ongoing/When/200x/2008/08/14/Rails-ETags
http://ryandaigle.com/articles/2008/8/14/what-s-new-in-edge-rails-simpler-conditional-get-support-etags
什么是“ETag”?
HTTP协议规格说明定义ETag为“被请求变量的实体值”
(参见 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html —— 章节 14.19)。
另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能
是JSON或XML文档。
服务器单独负责判断记号是什么及其含义,并在
HTTP响应头
中将其传送到客户端。
http://www.infoq.com/cn/articles/etags
使用ETags减少Web应用带宽和负载
ETags(Entity tags)是服务器和浏览器的一个功能,它用来判断浏览器缓存里的元素是否和原来服务器上的一致。ETags比last-modified date更具有弹性,它用一个独一无二的字符串来标识一个元素的版本。
源服务器用响应头里的ETag来特定一个元素的ETag:
HTTP/1.1 200 OK
Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
ETag: "10c24bc-4ab-457e1c1f"
Content-Length: 12195
之后,如果浏览器要验证这个元素,它就会用If-None-Match头来回传ETag到源服务器。如果符合的话,一个304状态的代码就会从源服务器返回到浏览器,这样源服务器就节省了传输具体数据的开销。
GET /i/yahoo.gif HTTP/1.1
Host: us.yimg.com
If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
If-None-Match: "10c24bc-4ab-457e1c1f" 网页教学网
HTTP/1.1 304 Not Modified
用Etags的问题就在于它会标识那个特定的服务器,如果换了服务器,Etags也就失去了原有的功能,但是这种现在在网络上太常见了,因为我们经常用服务器集群。默认情况下,Apache和IIS会在Etag中内嵌数据,这样会动态减少验证成功的机会。
Apache1.3和2.x的ETag格式是inode-size-timestamp。虽然一个文件可能在不同服务器的同一个目录,同样的大小,安全级,时间戳等等,它的inode会随着服务器的不同而不同。
IIS5.0和6.0有同样类似Etags的东西,叫时间戳:ChangeNumber(更改号),更改号是一个用来追踪IIS配置变化的计数器,ChangeNumber在不同IIS服务器之间是不一样的。 Webjx.Com
它最终的问题就是,IIS和Apache产生的Etags会在不同服务器之间无法匹配,这样我们的浏览器就无法得到我们期待的304响应,而给我们的是一个普通的200响应,和正常的数据流。如果你的网站只有一个服务器还无所谓,如果是集群,而你用的是默认的ETag配置,你的用户就会获得更慢的页面,你的服务器也会有更高的负载,消耗更大的带宽资源,代理也无法高效缓存你的内容,甚至即使你有一个长时间过期的头部(按:见第三条规则),也不会阻止它重新载入内容。
如果你不想发挥Etags提供的这个弹性验证模型的优势,你最好关掉它。Apache中关掉它的方法是在Apache的配置文件中写这么一句:
FileETag none
http://www.webjx.com/web/xinde/20080306/xinde_jiqiao_4686.html
也有人对etag使用持不同看法
http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!2132.entry
editra跨平台的代码编辑器
|
JavaScript 忍者的秘密
创建新主题
...
1
...
目前这个主题还没有回复,或许你可以帮楼主加盖一层?
在回复之前你需要先进行登录
电子邮件或昵称
密码
回到顶部
|
Performance
|
返回 ChinaonRails 首页
|
注册
|
找回密码
© 2007 A
Jesse Cai
Production
-
About
-
京ICP备07020911号
Analytics