国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[面試專題]Web緩存詳解

bladefury / 2906人閱讀

摘要:緩存詳解標(biāo)簽空格分隔緩存緩存之于性能優(yōu)化請(qǐng)求更快通過將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器如,在不影響網(wǎng)站交互的前提下可以大大加快網(wǎng)站加載速度。強(qiáng)制緩存不發(fā)請(qǐng)求到服務(wù)器,協(xié)商緩存會(huì)發(fā)請(qǐng)求到服務(wù)器。參考瀏覽器協(xié)議緩存機(jī)制詳解

Web緩存詳解

標(biāo)簽(空格分隔): 緩存


緩存之于性能優(yōu)化

請(qǐng)求更快:通過將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器(如CDN),在不影響網(wǎng)站交互的前提下可以大大加快網(wǎng)站加載速度。

降低服務(wù)器壓力:在大量用戶并發(fā)請(qǐng)求的情況下,服務(wù)器的性能受到限制,此時(shí)將一些靜態(tài)資源放置在網(wǎng)絡(luò)的多個(gè)節(jié)點(diǎn),可以起到均衡負(fù)載的作用,降低服務(wù)器的壓力。

緩存方式

服務(wù)端緩存,例如CDN

客戶端緩存,即瀏覽器緩存,可通過cache,manifest等實(shí)現(xiàn).

瀏覽器緩存分兩類,強(qiáng)制緩存和協(xié)商緩存

強(qiáng)制緩存:瀏覽器在加載資源時(shí),根據(jù)http header判斷它是否命中強(qiáng)緩存,如果命中,瀏覽器直接從自己的緩存中讀取資源,不會(huì)發(fā)請(qǐng)求到服務(wù)器。比如某個(gè)css文件,如果瀏覽器在加載它所在的網(wǎng)頁時(shí),這個(gè)css文件的緩存配置命中了強(qiáng)緩存,瀏覽器就直接從緩存中加載這個(gè)css,連請(qǐng)求都不會(huì)發(fā)送到網(wǎng)頁所在服務(wù)器.

協(xié)商緩存:當(dāng)強(qiáng)緩存沒有命中的時(shí)候,瀏覽器一定會(huì)發(fā)送一個(gè)請(qǐng)求到服務(wù)器,通過服務(wù)器端依據(jù)資源的另外一些http header驗(yàn)證這個(gè)資源是否命中協(xié)商緩存,如果協(xié)商緩存命中,服務(wù)器會(huì)將這個(gè)請(qǐng)求返回(304),但是不會(huì)返回這個(gè)資源的數(shù)據(jù),而是告訴客戶端可以直接從緩存中加載這個(gè)資源,于是瀏覽器就又會(huì)從自己的緩存中去加載這個(gè)資源;若未命中請(qǐng)求,則將資源返回客戶端,并更新本地緩存數(shù)據(jù)(200)。

強(qiáng)制緩存不發(fā)請(qǐng)求到服務(wù)器,協(xié)商緩存會(huì)發(fā)請(qǐng)求到服務(wù)器。

強(qiáng)制緩存:Expires、Cache-control

協(xié)商緩存:Last-Modified/If-Modified-Since, Etag/If-None-Match

強(qiáng)制緩存控制

Expires,HTTP/1.0提出的一個(gè)表示資源過期時(shí)間的header,它描述的是一個(gè)絕對(duì)時(shí)間,由服務(wù)器返回,用GMT格式的字符串表示,如:Expires:Thu, 31 Dec 2016 23:55:55 GMT,Expires是較老的強(qiáng)緩存管理header,由于它是服務(wù)器返回的一個(gè)絕對(duì)時(shí)間,這樣存在一個(gè)問題,如果客戶端的時(shí)間與服務(wù)器的時(shí)間相差很大(比如時(shí)鐘不同步,或者跨時(shí)區(qū)),那么誤差就很大,所以在HTTP/1.1版開始,使用Cache-Control: max-age=秒替代。

Cache-Control描述的是一個(gè)相對(duì)時(shí)間,在進(jìn)行緩存命中的時(shí)候,利用客戶端時(shí)間進(jìn)行判斷,所以相比較Expires,Cache-Control的緩存管理更有效.
讀取緩存數(shù)據(jù)條件:上次緩存時(shí)間(客戶端的)+max-age < 當(dāng)前時(shí)間(客戶端的).Cache-Control取值的含義:

各個(gè)消息中的指令含義如下:

no-cache指示請(qǐng)求或響應(yīng)消息不能緩存,該選項(xiàng)并不是說可以設(shè)置”不緩存“,而是需要和服務(wù)器確認(rèn)。

max-age指示客戶機(jī)可以接收生存期不大于指定時(shí)間(以秒為單位)的響應(yīng)。上次緩存時(shí)間(客戶端的)+max-age(64200s)<客戶端當(dāng)前時(shí)間

min-fresh指示客戶機(jī)可以接收響應(yīng)時(shí)間小于當(dāng)前時(shí)間加上指定時(shí)間的響應(yīng)。

協(xié)商緩存控制

Last-Modified/If-Modified-Since:
Last-Modified:標(biāo)示這個(gè)響應(yīng)資源的最后修改時(shí)間。web服務(wù)器在響應(yīng)請(qǐng)求時(shí),告訴瀏覽器資源的最后修改時(shí)間。If-Modified-Since:當(dāng)資源過期時(shí)(強(qiáng)緩存失效),發(fā)現(xiàn)資源具有Last-Modified聲明,則再次向web服務(wù)器請(qǐng)求時(shí)帶上If-Modified-Since標(biāo)簽,把上次服務(wù)器返回的Last-Modified時(shí)間返回到服務(wù)器端。web服務(wù)器收到請(qǐng)求后根據(jù)If-Modified-Since 時(shí)間與被請(qǐng)求資源的最后修改時(shí)間進(jìn)行比對(duì)。若最后修改時(shí)間較新,說明資源又被改動(dòng)過,則響應(yīng)整片資源內(nèi)容(寫在響應(yīng)消息包體內(nèi)),HTTP 200;若最后修改時(shí)間較舊,說明資源無新修改,則響應(yīng)HTTP 304 (無需包體,節(jié)省瀏覽),告知瀏覽器繼續(xù)使用所保存的cache。

注: Last-Modified標(biāo)注的最后修改只能精確到秒級(jí),如果某些文件在1秒鐘以內(nèi),被修改多次的話,它將不能準(zhǔn)確標(biāo)注文件的修改時(shí)間(無法及時(shí)更新文件)
如果某些文件會(huì)被定期生成,當(dāng)有時(shí)內(nèi)容并沒有任何變化,但Last-Modified卻改變了,導(dǎo)致文件沒法使用緩存,有可能存在服務(wù)器沒有準(zhǔn)確獲取文件修改時(shí)間,或者與代理服務(wù)器時(shí)間不一致等情形(無法使用緩存)。

Etag/If-None-Match:
Etag:web服務(wù)器響應(yīng)請(qǐng)求時(shí),告訴瀏覽器當(dāng)前資源在服務(wù)器的唯一標(biāo)識(shí)(生成規(guī)則由服務(wù)器決定)。Apache中,ETag的值,默認(rèn)是對(duì)文件的索引節(jié)(INode),大小(Size)和最后修改時(shí)間(MTime)進(jìn)行Hash后得到的。

If-None-Match:當(dāng)資源過期時(shí)(使用Cache-Control標(biāo)識(shí)的max-age),發(fā)現(xiàn)資源具有Etage聲明,則再次向web服務(wù)器請(qǐng)求時(shí)帶上頭If-None-Match (Etag的值)。web服務(wù)器收到請(qǐng)求后發(fā)現(xiàn)有頭If-None-Match 則與被請(qǐng)求資源的相應(yīng)校驗(yàn)串進(jìn)行比對(duì),決定返回200或304。
注:Etag是服務(wù)器自動(dòng)生成或者由開發(fā)者生成的對(duì)應(yīng)資源在服務(wù)器端的唯一標(biāo)識(shí)符,能夠更加準(zhǔn)確的控制緩存。

上述緩存控制機(jī)制優(yōu)先級(jí):
Expires < Cache:max-age
Last-Modified < ETag

CDN

CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。通過在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r(shí)地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況以及到用戶的距離和響應(yīng)時(shí)間等綜合信息將用戶的請(qǐng)求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上。其目的是使用戶可就近取得所需內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。

CDN是一個(gè)經(jīng)策略性部署的整體系統(tǒng),包括分布式存儲(chǔ)、負(fù)載均衡、網(wǎng)絡(luò)請(qǐng)求的重定向和內(nèi)容管理4個(gè)要件,而內(nèi)容管理和全局的網(wǎng)絡(luò)流量管理(Traffic Management)是CDN的核心所在。通過用戶就近性和服務(wù)器負(fù)載的判斷,CDN確保內(nèi)容以一種極為高效的方式為用戶的請(qǐng)求提供服務(wù)。

參考:
瀏覽器 HTTP 協(xié)議緩存機(jī)制詳解

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/51179.html

相關(guān)文章

  • [面試專題]Web緩存詳解

    摘要:緩存詳解標(biāo)簽空格分隔緩存緩存之于性能優(yōu)化請(qǐng)求更快通過將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器如,在不影響網(wǎng)站交互的前提下可以大大加快網(wǎng)站加載速度。強(qiáng)制緩存不發(fā)請(qǐng)求到服務(wù)器,協(xié)商緩存會(huì)發(fā)請(qǐng)求到服務(wù)器。參考瀏覽器協(xié)議緩存機(jī)制詳解 Web緩存詳解 標(biāo)簽(空格分隔): 緩存 緩存之于性能優(yōu)化 請(qǐng)求更快:通過將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器(如CDN),在不影響網(wǎng)站交互的前提...

    Tikitoo 評(píng)論0 收藏0
  • 面試集 - 收藏集 - 掘金

    摘要:計(jì)算數(shù)組的極值微信面試題獲取元素的最終前端掘金一題目用代碼求出頁面上一個(gè)元素的最終的,不考慮瀏覽器,不考慮元素情況。 Excuse me?這個(gè)前端面試在搞事! - 前端 - 掘金金三銀四搞事季,前端這個(gè)近年的熱門領(lǐng)域,搞事氣氛特別強(qiáng)烈,我朋友小偉最近就在瘋狂面試,遇到了許多有趣的面試官,有趣的面試題,我來幫這個(gè)搞事 boy 轉(zhuǎn)述一下。 以下是我一個(gè)朋友的故事,真的不是我。 ... ja...

    crossea 評(píng)論0 收藏0
  • 美團(tuán)面試題:Java-線程池 ThreadPool 專題詳解

    摘要:去美團(tuán)面試,問到了什么是線程池,如何使用,為什么要用以下做個(gè)總結(jié)。二線程池線程池的作用線程池作用就是限制系統(tǒng)中執(zhí)行線程的數(shù)量。真正的線程池接口是。創(chuàng)建固定大小的線程池。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求。 去美團(tuán)面試,問到了什么是線程池,如何使用,為什么要用,以下做個(gè)總結(jié)。關(guān)于線程之前也寫過一篇文章《高級(jí)面試題總結(jié)—線程池還能這么玩?》 1、什么是線程池:? java.util...

    enrecul101 評(píng)論0 收藏0
  • 美團(tuán)面試題:Java-線程池 ThreadPool 專題詳解

    摘要:去美團(tuán)面試,問到了什么是線程池,如何使用,為什么要用以下做個(gè)總結(jié)。二線程池線程池的作用線程池作用就是限制系統(tǒng)中執(zhí)行線程的數(shù)量。真正的線程池接口是。創(chuàng)建固定大小的線程池。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求。 去美團(tuán)面試,問到了什么是線程池,如何使用,為什么要用,以下做個(gè)總結(jié)。關(guān)于線程之前也寫過一篇文章《高級(jí)面試題總結(jié)—線程池還能這么玩?》 1、什么是線程池:? java.util...

    wujl596 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<