中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Web前端性能優(yōu)化教程08:配置ETag

2019-03-26    來(lái)源:teroy博客園

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

本文是Web前端性能優(yōu)化系列文章中的第五篇,主要講述內(nèi)容:配置ETag。完整教程可查看:Web前端性能優(yōu)化

什么是ETag?

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

條件GET請(qǐng)求

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

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

最新修改時(shí)間

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

以一個(gè)實(shí)際例子來(lái)說(shuō)明,當(dāng)我們不帶緩存訪問(wèn)www.google.com.hk的時(shí)候,我們需要下載google的logo,這時(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)需要再次訪問(wèn)相同組件的時(shí)候,同時(shí)緩存已經(jīng)過(guò)期,瀏覽器會(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)ETag和Modified-Time都出現(xiàn)了,則原始服務(wù)器禁止返回304除非請(qǐng)求中的條件頭字段全部一致。

為什么要引入ETag?

ETag主要是為了解決Last-Modified無(wú)法解決的一些問(wèn)題:

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

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

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

ETag帶來(lái)的問(wèn)題

ETag的問(wèn)題在于通常使用某些屬性來(lái)構(gòu)造它,有些屬性對(duì)于特定的部署了網(wǎng)站的服務(wù)器來(lái)說(shuō)是唯一的。當(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)任何問(wèn)題,可以直接移除ETag,google的搜索首頁(yè)則沒(méi)有使用ETag。

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

完整教程可查看:Web前端性能優(yōu)化

標(biāo)簽: Web前端性能優(yōu)化 Web前端性能優(yōu)化教程 Web優(yōu)化 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:友鏈中的7大陷阱你中招了嗎

下一篇:Wordpress站點(diǎn)SEO優(yōu)化教程四:數(shù)據(jù)庫(kù)優(yōu)化