我只是在WebPageTest.org上浏览我们的网站,他们关于加快网站访问速度的建议之一是:
除非您有明确的理由需要使用ETag标头,否则通常不应使用
我想知道这意味着什么。这是否意味着您将不会更改的静态内容不应该包含它们,或者这意味着您将要定期更改的内容不应该具有它们,或者它意味着除非您拥有固定的内容,否则通常不应该使用它们具体需求。
如果是后者,那么什么时候才是合适的时间使用它们?谢谢你的帮助。
我只是在WebPageTest.org上浏览我们的网站,他们关于加快网站访问速度的建议之一是:
除非您有明确的理由需要使用ETag标头,否则通常不应使用
我想知道这意味着什么。这是否意味着您将不会更改的静态内容不应该包含它们,或者这意味着您将要定期更改的内容不应该具有它们,或者它意味着除非您拥有固定的内容,否则通常不应该使用它们具体需求。
如果是后者,那么什么时候才是合适的时间使用它们?谢谢你的帮助。
Answers:
ETag是“上次修改时间”的替代方法(但可以与“上次修改时间”结合使用),以确定缓存验证。
客户端可以基于ETag发送前提条件,例如if-matchs或if-none-matches。您不仅可以使用GET请求(这就是webpagetest.org所做的),还可以使用“机会更新”,这样PUT请求就具有前提条件,并且如果自从ETag以来已更新资源,则将不执行更新操作。最后获得。
简而言之:您在CMS的页面上单击“编辑”,您的朋友在CMS的页面上单击“编辑”,您的朋友执行编辑并单击“保存”,最后您单击“保存”-无需使用ETag或Content-MD5 HTTP标头为了重新发明轮子以防止出现问题(例如您擦拭朋友更改),该解决方案已经是HTTP协议的一部分,因此仅使用它就很有意义。
通常,我同意AOL(运行webpagetest.org的人)关于“一种尺寸适合所有人”的建议-最好不要在相差一秒钟后,用模糊字符串(ETag通常不太漂亮或人类可读)堵塞HTTP标头。 (最后修改时间可以检测到的内容)将完成手头的工作。
如果某个页面每秒要更新几次,而您绝对需要显示最新,最准确的版本,则可能要尝试使用HTTP GET以外的解决方案,或者仅使用ETag。
请注意,您的ETag不包含每个文件系统,每个服务器配置更改等信息(例如Apache上默认的inode信息),否则当有两个服务器时,您将遇到问题(每个ETag都不匹配)。
解释一下Coding Horror 对YSlow Firebug插件的出色评估(看来WebPageTest.org以此作为评估的基础):
“雅虎是世界上最繁忙的网站之一-它的问题可能不是您的问题。”
如果您不是每天都在负载平衡的网络中处理数百万个唯一身份,那么很有可能在优化网站时,所提供的建议并非正确的选择。