真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

通過HTTPHeader控制緩存-創(chuàng)新互聯(lián)

我們經(jīng)常通過緩存技術(shù)來加快網(wǎng)站的訪問速度,從而提升用戶體驗(yàn)。HTTP協(xié)議中也規(guī)定了一些和緩存相關(guān)的Header,來允許瀏覽器或共享高速緩存緩存資源。這些Header包括:

目前創(chuàng)新互聯(lián)建站已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、柯坪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
  • Last-Modified 和 If-Modified-Since
  • ETag 和 If-None-Match
  • Expires
  • Cache-Control
    以上Header又可以分成兩種類型:

  • 協(xié)商緩存:瀏覽器發(fā)送驗(yàn)證到服務(wù)器,由服務(wù)器決定是否從緩存中讀取,如 1 和 2 。
  • 強(qiáng)緩存:瀏覽器驗(yàn)證緩存的有效性,然后決定是否從緩存中讀取數(shù)據(jù),如 3 和 4 。
    本文將會(huì)分別介紹這四種配置的作用以及可能產(chǎn)生的影響。

1、Last-Modified 和 If-Modified-Since
Last-Modified:服務(wù)器在響應(yīng)請(qǐng)求時(shí),告知瀏覽器資源的最后修改時(shí)間。

If-Modified-Since:瀏覽器再次發(fā)送請(qǐng)求時(shí),會(huì)通過此Header通知服務(wù)器在上次請(qǐng)求時(shí)所得到的資源最后修改時(shí)間。服務(wù)器會(huì)將If-Modified-Since與被請(qǐng)求資源的最后修改時(shí)間進(jìn)行比對(duì)。若資源的最后修改時(shí)間晚于If-Modified-Since,表示資源已被改動(dòng),則響最新的資源,返回200狀態(tài)碼;若資源的最后修改時(shí)間早于或等于If-Modified-Since,表示瀏覽器端的資源已經(jīng)是最新版本,響應(yīng)304狀態(tài)碼,通知瀏覽器繼續(xù)使用緩存中的資源。

2、ETag 和 If-None-Match
ETag:服務(wù)器分配給資源的唯一標(biāo)識(shí)符,資源被修改后,ETag也會(huì)隨之發(fā)生變化。

If-None-Match:瀏覽器再次發(fā)送請(qǐng)求時(shí),會(huì)通過此Header通知服務(wù)器已緩存資源的ETag。服務(wù)器會(huì)將If-None-Match與被請(qǐng)求資源的最新ETag進(jìn)行比對(duì)。若不相同,表示資源已被改動(dòng),則響應(yīng)最新的資源,返回200狀態(tài)碼;若值相同,則直接響應(yīng)304狀態(tài)碼,通知瀏覽器繼續(xù)使用緩存中的資源。

3、Expires
服務(wù)器可以通過此Header向?yàn)g覽器傳遞一個(gè)具體的時(shí)間(格林威治格式,例如:Thu, 19 Jul 2018 07:43:05 GMT) ,來明確地宣告資源的有效期。在資源過期之前,瀏覽器不再發(fā)送請(qǐng)求,而是直接從緩存中讀取數(shù)據(jù)。只有當(dāng)資源過期之后,瀏覽器才會(huì)再次向服務(wù)器請(qǐng)求該資源。

4、Cache-Control
服務(wù)器使用此Header來向客戶端建議緩存策略,它有一下幾個(gè)可選值:

max-age=秒:告知瀏覽器緩存的有效時(shí)長,在該時(shí)間內(nèi)瀏覽器將直接從緩存中讀取數(shù)據(jù)。

s-maxage=秒:作用同max-age,但是只對(duì)共享高速緩存(如CDN)有效,對(duì)瀏覽器無效。

no-cache:告知瀏覽器不要直接使用緩存,而是必須向服務(wù)器發(fā)送請(qǐng)求。

no-store:告知瀏覽器不要緩存本次請(qǐng)求和響應(yīng)的任何信息。

public:宣告任何緩存媒介都可以緩存該響應(yīng)。

private:宣告該響應(yīng)只允許個(gè)體客戶端(如瀏覽器)去緩存,而不允許共享高速緩存(如CDN)去緩存。

在上面的介紹中我們了解到瀏覽器會(huì)根據(jù)max-age設(shè)置的時(shí)間進(jìn)行緩存。而通過研究發(fā)現(xiàn)CDN也會(huì)識(shí)別源站響應(yīng)頭中Cache-Control屬性,根據(jù)max-age設(shè)置的時(shí)間進(jìn)行緩存,但是,如果源站同時(shí)設(shè)置了s-maxage和max-age,那么CDN會(huì)優(yōu)先采用s-maxage。

下面通過圖例來展示一下這些可選值的效果。

首先了解一下瀏覽器是怎樣根據(jù)max-age進(jìn)行緩存的:
通過HTTP Header控制緩存

從上圖不難發(fā)現(xiàn),服務(wù)器在Header中返回了Cache-Control: max-age=100后,瀏覽器成功緩存100秒,該時(shí)間段內(nèi)的請(qǐng)求都從直接以本地緩存來響應(yīng)。

那么,服務(wù)器在Header中返回Cache-Control:s-maxage=100時(shí),又會(huì)對(duì)瀏覽器產(chǎn)生什么樣的影響呢?

通過HTTP Header控制緩存

如上圖所示,瀏覽器沒有采取任何緩存策略,這是因?yàn)閟-maxage面向的是共享高速緩。

上面這兩個(gè)例子很容易理解,在現(xiàn)實(shí)世界中,為了加快網(wǎng)站響應(yīng)速度,我們可能會(huì)在瀏覽器和服務(wù)器之間引入CDN服務(wù)。瀏覽器的請(qǐng)求會(huì)先到達(dá)CDN,然后CDN判斷是從緩存中讀取數(shù)據(jù)還是回源到服務(wù)器。接下來,讓我們看看max-age和s-maxage會(huì)對(duì)CDN的緩存策略帶來哪些影響。
通過HTTP Header控制緩存

可以看出CDN也會(huì)利用max-age來緩存,所以在100秒內(nèi)強(qiáng)制刷新瀏覽器時(shí),CDN會(huì)直接用緩存來響應(yīng)。
如果服務(wù)器使用了s-maxage又會(huì)如何呢?
通過HTTP Header控制緩存

不難發(fā)現(xiàn)CDN對(duì)max-age和s-maxage采取了同樣的緩存策略,但瀏覽器并不會(huì)根據(jù)s-maxage來進(jìn)行緩存。

CDN供應(yīng)商的特殊規(guī)則

我們分別測試了阿里云和騰訊云的CDN對(duì)Cache-Control的支持情況,發(fā)現(xiàn)他們都有一些獨(dú)特的規(guī)則。

阿里云CDN可以在控制臺(tái)里設(shè)置Cache-Control,該設(shè)置會(huì)覆蓋源服務(wù)器的Cache-Control。

騰訊云CDN雖然沒有再控制臺(tái)提供覆蓋Cache-Control的功能,但其規(guī)則卻一點(diǎn)也不簡單,在使用的時(shí)候一定要特別注意:

  • 服務(wù)器和CDN均不對(duì)緩存進(jìn)行配置時(shí),CDN會(huì)采用默認(rèn)的緩存機(jī)制(靜態(tài)文件緩存30天,動(dòng)態(tài)請(qǐng)求不緩存);
  • CDN配置緩存機(jī)制(但并未開啟高級(jí)緩存配置)且服務(wù)器設(shè)置Cache-Control: s-maxage=200,max-age=100時(shí),CDN會(huì)按照其控制臺(tái)設(shè)置的規(guī)則進(jìn)行緩存,瀏覽器則按照max-age進(jìn)行緩存;
  • 服務(wù)器不設(shè)置Cache-Control時(shí),CDN會(huì)自動(dòng)在響應(yīng)的Header中添加Cache-Control: max-age=600,這就會(huì)讓瀏覽器將該資源緩存600秒;
  • 服務(wù)器設(shè)置為禁用緩存時(shí),CDN和瀏覽器均不進(jìn)行緩存;
  • 服務(wù)器設(shè)置Cache-Control: s-maxage=200,max-age=100并開啟CDN的高級(jí)緩存配置時(shí),CDN會(huì)從s-maxage和控制臺(tái)中設(shè)置的緩存時(shí)間中選擇最小值來作為緩存時(shí)間,而瀏覽器則始終使用max-age;
  • 服務(wù)器設(shè)置Cache-Control:max-age=100并開啟CDN的高級(jí)緩存配置時(shí),CDN會(huì)從max-age和控制臺(tái)中設(shè)置的緩存時(shí)間中選擇最小值來作為緩存時(shí)間,不影響瀏覽器的緩存策略。

組合使用
如果同時(shí)設(shè)置了這些Header,瀏覽器和高速共享緩存會(huì)按照下面的優(yōu)先級(jí)進(jìn)行緩存:
Cache-Control > Expires > ETag > Last-Modified
也就是說,Cache-Control不僅是強(qiáng)緩存,而且擁有最高的優(yōu)先級(jí),我們可以為不經(jīng)常發(fā)生變化的資源應(yīng)用該Header來提升響應(yīng)時(shí)間。

在Ada中使用緩存
Ada提供了UI腳手架和API腳手架,這兩類腳手架的服務(wù)器端入口文件分別為index.server.js和index.js,我們只需要在入口文件的請(qǐng)求處理函數(shù)中為響應(yīng)添加適當(dāng)?shù)腍eader,即可通知客戶端進(jìn)行響應(yīng)的緩存,比如:

  • // 設(shè)置CDN緩存300秒,瀏覽器緩存200秒
  • ctx.response.headers.set('Cache-Control', public,s-maxage=300,max-age=200)
  • 在為請(qǐng)求添加緩存Header之前,應(yīng)該先為其制定適當(dāng)?shù)木彺娌呗?,需要考慮該URL是否適合緩存(數(shù)據(jù)是否特定于用戶)以及需要緩存的時(shí)長等等。

總結(jié)
通過使用這些HTTP Header,我們可以主動(dòng)影響瀏覽器甚至CDN的緩存策略,從而減少請(qǐng)求數(shù)量,提升網(wǎng)頁性能,減輕服務(wù)器壓力。
Ada的靈活機(jī)制能讓我們?yōu)椴煌腢RL設(shè)置不同的緩存策略,能夠更有針對(duì)性地進(jìn)行主動(dòng)緩存。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站題目:通過HTTPHeader控制緩存-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/csogss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部