最新中文字幕免费看影视,在线观看国产一区二区三区,在线欧美日韩制服国产,中文字幕,亚洲一区,制服欧美激情丝袜综合色

新聞資訊

精品主題,實(shí)戰(zhàn)科普,最新行業(yè)熱點(diǎn)話題,隨時(shí)掌握云上咨訊。

Web前端性能優(yōu)化教程08:配置ETag
來源:中科服    發(fā)布時(shí)間:2015-06-27    文章分類:行業(yè)動(dòng)態(tài)     分享:

什么是ETag?

 

實(shí)體標(biāo)簽(EntityTag)是唯一標(biāo)識(shí)了一個(gè)組件的一個(gè)特定版本的字符串,是web服務(wù)器用于確認(rèn)緩存組件的有效性的一種機(jī)制,通??梢允褂媒M件的某些屬性來構(gòu)造它。

 

條件GET請(qǐng)求

 

瀏覽器下載組件的時(shí)候,會(huì)將它們存儲(chǔ)到瀏覽器緩存中。如果需要再次獲取相同的組件,瀏覽器將檢查組件的緩存時(shí)間,假如已經(jīng)過期,那么瀏覽器將發(fā)送一個(gè)條件GET請(qǐng)求到服務(wù)器,服務(wù)器判斷緩存還有效,則發(fā)送一個(gè)304響應(yīng),告訴瀏覽器可以重用緩存組件。

 

那么服務(wù)器是根據(jù)什么判斷緩存是否還有效呢?答案有兩種方式,一種是前面提到的ETag,另一種是根據(jù)最新修改時(shí)間。先來看看最新修改時(shí)間。

 

最新修改時(shí)間

 

原始服務(wù)器通過Last-Modified響應(yīng)頭來返回組件的最新修改時(shí)間。

 

以一個(gè)實(shí)際例子來說明,當(dāng)我們不帶緩存訪問www.google.com.hk的時(shí)候,我們需要下載googlelogo,這時(shí)會(huì)發(fā)送這樣一個(gè)HTTP請(qǐng)求:

 

Request

 

GET /logo.png HTTP 1.1

 

Host: www.google.com.hk

 

Response:

 

HTTP 1.1 200 OK

 

Last-Modified:Wed, 09 Oct 2013 01:35:39 GMT

 

當(dāng)需要再次訪問相同組件的時(shí)候,同時(shí)緩存已經(jīng)過期,瀏覽器會(huì)發(fā)送如下條件GET請(qǐng)求:

 

Request

 

GET /logo.png HTTP 1.1

 

If-Modified-Since:Wed, 09 Oct 2013 01:35:39 GMT

 

Host: www.google.com.hk

 

Response:

 

HTTP 1.1 304 Not Modified

 

實(shí)體標(biāo)簽

 

ETag提供了另外一種方式,用于檢測(cè)瀏覽器緩存中的組件與原始服務(wù)器上的組件是否匹配。摘抄自書上的例子:

 

不帶緩存的請(qǐng)求:

 

Request

 

GET /i/yahoo/gif HTTP 1.1

 

Host: us.yimg.com

 

Response:

 

HTTP 1.1 200 OK

 

Last-Modified:Tue,12 Dec 200603:03:59 GMT

 

ETag:10c24bc-4ab-457elc1f

 

再次請(qǐng)求相同組件:

 

Request

 

GET /i/yahoo/gif HTTP 1.1

 

Host: us.yimg.com

 

If-Modified-Since:Tue,12 Dec 200603:03:59 GMT

 

If-None-Match:10c24bc-4ab-457elc1f

 

Response:

 

HTTP 1.1 304 Not Midified

 

當(dāng)ETagModified-Time都出現(xiàn)了,則原始服務(wù)器禁止返回304除非請(qǐng)求中的條件頭字段全部一致。

 

為什么要引入ETag?

 

ETag主要是為了解決Last-Modified無法解決的一些問題:

 

1. 一些文件也許會(huì)周期性的更改,但是他的內(nèi)容并不改變(僅僅改變的修改時(shí)間),這個(gè)時(shí)候我們并不希望客戶端認(rèn)為這個(gè)文件被修改了,而重新GET;

 

2. 某些文件修改非常頻繁,比如在秒以下的時(shí)間內(nèi)進(jìn)行修改,(比方說1s內(nèi)修改了N)If-Modified-Since能檢查到的粒度是s級(jí)的,這種修改無法判斷(或者說UNIX記錄MTIME只能精確到秒);

 

3. 某些服務(wù)器不能精確的得到文件的最后修改時(shí)間。

 

ETag帶來的問題

 

ETag的問題在于通常使用某些屬性來構(gòu)造它,有些屬性對(duì)于特定的部署了網(wǎng)站的服務(wù)器來說是唯一的。當(dāng)使用集群服務(wù)器的時(shí)候,瀏覽器從一臺(tái)服務(wù)器上獲取了原始組件,之后又向另外一臺(tái)不同的服務(wù)器發(fā)起條件GET請(qǐng)求,ETag就會(huì)出現(xiàn)不匹配的狀況。

 

最佳實(shí)踐

 

1. 如果使用Last-Modified不會(huì)出現(xiàn)任何問題,可以直接移除ETaggoogle的搜索首頁(yè)則沒有使用ETag。

 

2. 確定要使用ETag,在配置ETag的值的時(shí)候,移除可能影響到組件集群服務(wù)器驗(yàn)證的屬性,例如只包含組件大小和時(shí)間戳。

 

返回列表

你知道你的Internet Explorer是過時(shí)了嗎?

為了得到我們網(wǎng)站最好的體驗(yàn)效果,我們建議您升級(jí)到最新版本的Internet Explorer或選擇另一個(gè)web瀏覽器.一個(gè)列表最流行的web瀏覽器在下面可以找到.