YSlow—— 配置ETag

ETag简介

实体标签(Entity Tag),是server和browser确认缓存组件的有效性的一种机制。 
个人觉得,如果Expires是时间戳,ETag类似版本戳。 【见下图】: 



ETag带来的问题

ETag的问题在于,通常用组件的某些属性(大小、时间、等)来构造它,这些属性对于特定的、寄宿了网站的服务器来说是唯一的。
当浏览器从一台服务器上获取了原始组件,之后,又向另外一台不同的服务器发起请求时,ETag是不会匹配的。 
对于拥有多台服务器的网站,会大大降低有效性验证的成功率。 
如果ETag不匹配,用户就不会按照ETag设计的那样收到更小更快的304响应;
相反,他们会收到普遍的200响应以及组件的所有数据。 
如果你只用一台服务器上寄宿网站,这不是什么问题,但如果使用了服务器集群
 组件下载的次数可能比必须下载的次数多得多,这将导致性能的下降。 
如果有n台服务器,ETag匹配的概率只有 1/n。 【见下图】: 



If-None-Match比If-Modified-Since具有更高的优先级。
实际上没有If-None-Match头反而会好一些。 
你会说“我的组件添加了长久的Expires头”。 
事实上,即使你的组件具有长久的Expires头,一旦用户单击Reload或者Refresh按钮,依然会产生get请求。 
【If-None-Match和If-Modified-Sinc见下图】: 

移除ETag

如何在Apache移除ETag:   http://www.askapache.com/htaccess/apache-speed-etags.html 
只需添加一行配置就能移除ETag: FileETag none 

如何在IIS移除ETag:
   http://www.bytestopshere.com/post.cfm/disable-remove-etags-on-iis-6-to-improve-performance

你可能感兴趣的:(性能测试,测试工具,Yslow,前端优化,etag)