Web前端机能SEO教程08:设置ETag
本文是Web前端机能SEO系列文章中的第五篇,次要报告内容:设置ETag。完好教程可检察:Web前端机能优化
甚么是ETag?
真体标签(EntityTag)是独一标识了一个组件的一个特定版本的字符串,是web效劳器用于确认缓存组件的有用性的一种机造,凡是能够利用组件的某些属性去机关它。
前提GET恳求
阅读器下载组件的时分,会将它们存储到阅读器缓存中。假如需求再次获得不异的组件,阅读器将查抄组件的缓存工夫,假设曾经过时,那么阅读器将收收一个前提GET恳求到效劳器,效劳器判定缓存借有用,则收收一个304呼应,报告阅读器能够重用缓存组件。
那么效劳器是按照甚么判定缓存能否借有用呢?谜底有两种方法,一种是前里提到的ETag,另外一种是按照最新修正工夫。先去看看最新修正工夫。
最新修正工夫
本初效劳器经由过程Last-Modified呼应头去返回组件的最新修正工夫。
以一个实践例子去阐明,当我们没有带缓存会见谷歌.hk的时分,我们需求下载谷歌的logo,那时会收收那样一个HTTP恳求:
Request:
GET /logo.png HTTP 1.1
Host: 谷歌.hk
Response:
HTTP 1.1 200 OK
Last-Modified:Wed, 09 Oct 2013 01:35:39 GMT
当需求再次会见不异组件的时分,同时缓存曾经过时,阅读器会收收以下前提GET恳求:
Request:
GET /logo.png HTTP 1.1
If-Modified-Since:Wed, 09 Oct 2013 01:35:39 GMT
Host: 谷歌.hk
Response:
HTTP 1.1 304 Not Modified
真体标签
ETag供给了别的一种方法,用于检测阅读器缓存中的组件取本初效劳器上的组件能否婚配。戴抄自书上的例子:
没有带缓存的恳求:
Request:
GET /i/yahoo/gif HTTP 1.1
Host: us.yimg
Response:
HTTP 1.1 200 OK
Last-Modified:Tue,12 Dec 200603:03:59 GMT
ETag:”10c24bc-4ab-457elc1f“
再次恳求不异组件:
Request:
GET /i/yahoo/gif HTTP 1.1
Host: us.yimg
If-Modified-Since:Tue,12 Dec 200603:03:59 GMT
If-None-Match:”10c24bc-4ab-457elc1f“
Response:
HTTP 1.1 304 Not Midified
当ETag战Modified-Time皆呈现了,则本初效劳器制止返回304除非恳求中的前提头字段局部分歧。
为何要引进ETag?
ETag次要是为理解决Last-Modified没法处理的一些成绩:
1. 一些文件或许会周期性的变动,可是他的内容其实不改动(仅仅改动的修正工夫),那个时分我们其实不期望客户端以为那个文件被修正了,而从头GET;
2. 某些文件修正十分频仍,好比正在秒以下的工夫内停止修正,(例如道1s内修正了N次),If-Modified-Since能查抄到的粒度是s级的,那种修正没法判定(大概道UNIX记载MTIME只能准确到秒);
3. 某些效劳器不克不及准确的获得文件的最初修正工夫。
ETag带去的成绩
ETag的成绩正在于凡是利用某些属性去机关它,有些属性关于特定的布置了网站的效劳器去道是独一的。当利用散群效劳器的时分,阅读器从一台效劳器上获得了本初组件,以后又背别的一台差别的效劳器倡议前提GET恳求,ETag便会呈现没有婚配的情况。
最好理论
1. 假如利用Last-Modified没有会呈现任何成绩,能够间接移除ETag,谷歌的搜刮尾页则出有利用ETag。
2. 肯定要利用ETag,正在设置ETag的值的时分,移除能够影响到组件散群效劳器考证的属性,比方只包罗组件巨细战工夫戳。
完好教程可检察:Web前端机能优化
注:相干网站建立本领浏览请移步到建站教程频讲。
相关信息
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|