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

資訊專欄INFORMATION COLUMN

詳解web緩存

ACb0y / 580人閱讀

摘要:指示對于單個用戶的整個或部分響應(yīng)消息,不能被共享緩存處理。參考文章瀏覽器協(xié)議緩存機(jī)制詳解的實(shí)現(xiàn)原理寫給后端程序員的緩存原理介紹

說說web緩存

網(wǎng)上關(guān)于WEB緩存的文章很多,今天匯總一下。

為什么要用緩存

一般針對靜態(tài)資源如CSS,JS,圖片等使用緩存,原因如下:

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

節(jié)省帶寬:對于已緩存的文件,可以減少請求帶寬甚至無需請求網(wǎng)絡(luò)。

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

緩存分類

緩存分為服務(wù)端側(cè)(server side,比如 Nginx、Apache)和客戶端側(cè)(client side,比如 web browser)。
常用的服務(wù)端緩存有CDN緩存,客戶端緩存就是指瀏覽器緩存。

瀏覽器緩存機(jī)制詳解 緩存類型

瀏覽器緩存分為強(qiáng)緩存協(xié)商緩存
1 強(qiáng)緩存:瀏覽器在加載資源時,先根據(jù)這個資源的一些http header判斷它是否命中強(qiáng)緩存,強(qiáng)緩存如果命中,瀏覽器直接從自己的緩存中讀取資源,不會發(fā)請求到服務(wù)器。比如某個css文件,如果瀏覽器在加載它所在的網(wǎng)頁時,這個css文件的緩存配置命中了強(qiáng)緩存,瀏覽器就直接從緩存中加載這個css,連請求都不會發(fā)送到網(wǎng)頁所在服務(wù)器;
2 協(xié)商緩存:當(dāng)強(qiáng)緩存沒有命中的時候,瀏覽器一定會發(fā)送一個請求到服務(wù)器,通過服務(wù)器端依據(jù)資源的另外一些http header驗(yàn)證這個資源是否命中協(xié)商緩存,如果協(xié)商緩存命中,服務(wù)器會將這個請求返回(304),但是不會返回這個資源的數(shù)據(jù),而是告訴客戶端可以直接從緩存中加載這個資源,于是瀏覽器就又會從自己的緩存中去加載這個資源;若未命中請求,則將資源返回客戶端,并更新本地緩存數(shù)據(jù)(200)。

強(qiáng)緩存與協(xié)商緩存區(qū)別:強(qiáng)緩存不發(fā)請求到服務(wù)器,協(xié)商緩存會發(fā)請求到服務(wù)器。

如何設(shè)置緩存

1 HTML Meta標(biāo)簽控制緩存(非HTTP協(xié)議定義)

上述代碼的作用是告訴瀏覽器當(dāng)前頁面不被緩存,每次訪問都需要去服務(wù)器拉取。這種方法使用上很簡單,但只有部分瀏覽器可以支持,而且所有緩存代理服務(wù)器都不支持,因?yàn)榇聿唤馕鯤TML內(nèi)容本身。
2 HTTP頭信息控制緩存
HTTP頭信息控制緩存是通過Expires(強(qiáng)緩存)、Cache-control(強(qiáng)緩存)、Last-Modified/If-Modified-Since(協(xié)商緩存)、Etag/If-None-Match(協(xié)商緩存)實(shí)現(xiàn),下面詳細(xì)介紹。

1)Expires是http1.0提出的一個表示資源過期時間的header,它描述的是一個絕對時間,由服務(wù)器返回,用GMT格式的字符串表示,如:Expires:Thu, 31 Dec 2016 23:55:55 GMT,

讀取緩存數(shù)據(jù)條件:緩存過期時間(服務(wù)器的)< 當(dāng)前時間(客戶端的

缺點(diǎn):Expires是較老的強(qiáng)緩存管理header,由于它是服務(wù)器返回的一個絕對時間,這樣存在一個問題,如果客戶端的時間與服務(wù)器的時間相差很大(比如時鐘不同步,或者跨時區(qū)),那么誤差就很大,所以在HTTP 1.1版開始,使用Cache-Control: max-age=秒替代。
2)Cache-Control描述的是一個相對時間,在進(jìn)行緩存命中的時候,都是利用客戶端時間進(jìn)行判斷,所以相比較Expires,Cache-Control的緩存管理更有效,安全一些。

讀取緩存數(shù)據(jù)條件:上次緩存時間(客戶端的)+max-age < 當(dāng)前時間(客戶端的)

Cache-Control值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

各個消息中的指令含義如下:
Public指示響應(yīng)可被任何緩存區(qū)緩存。
Private指示對于單個用戶的整個或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)前用戶的部分響應(yīng)消息,此響應(yīng)消息對于其他用戶的請求無效。
no-cache指示請求或響應(yīng)消息不能緩存,該選項并不是說可以設(shè)置”不緩存“,而是需要和服務(wù)器確認(rèn)
no-store在請求消息中發(fā)送將使得請求和響應(yīng)消息都不使用緩存,完全不存下來。
max-age指示客戶機(jī)可以接收生存期不大于指定時間(以秒為單位)的響應(yīng)。上次緩存時間(客戶端的)+max-age(64200s)<客戶端當(dāng)前時間
min-fresh指示客戶機(jī)可以接收響應(yīng)時間小于當(dāng)前時間加上指定時間的響應(yīng)。
max-stale指示客戶機(jī)可以接收超出超時期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶機(jī)可以接收超出超時期指定值之內(nèi)的響應(yīng)消息。

注意:這兩個header可以只啟用一個,也可以同時啟用,當(dāng)response header中,Expires和Cache-Control同時存在時,Cache-Control優(yōu)先級高于Expires:

3)Last-Modified/If-Modified-Since:Last-Modified/If-Modified-Since要配合Cache-Control使用。

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

Last-Modified標(biāo)注的最后修改只能精確到秒級,如果某些文件在1秒鐘以內(nèi),被修改多次的話,它將不能準(zhǔn)確標(biāo)注文件的修改時間(無法及時更新文件)

如果某些文件會被定期生成,當(dāng)有時內(nèi)容并沒有任何變化,但Last-Modified卻改變了,導(dǎo)致文件沒法使用緩存,有可能存在服務(wù)器沒有準(zhǔn)確獲取文件修改時間,或者與代理服務(wù)器時間不一致等情形(無法使用緩存)。

HTTP1.1中Etag解決了上述問題。

4)Etag/If-None-Match:Etag/If-None-Match也要配合Cache-Control使用。
Etag:web服務(wù)器響應(yīng)請求時,告訴瀏覽器當(dāng)前資源在服務(wù)器的唯一標(biāo)識(生成規(guī)則由服務(wù)器決定)。Apache中,ETag的值,默認(rèn)是對文件的索引節(jié)(INode),大小(Size)和最后修改時間(MTime)進(jìn)行Hash后得到的。
If-None-Match:當(dāng)資源過期時(使用Cache-Control標(biāo)識的max-age),發(fā)現(xiàn)資源具有Etage聲明,則再次向web服務(wù)器請求時帶上頭If-None-Match (Etag的值)。web服務(wù)器收到請求后發(fā)現(xiàn)有頭If-None-Match 則與被請求資源的相應(yīng)校驗(yàn)串進(jìn)行比對,決定返回200或304。
Etag是服務(wù)器自動生成或者由開發(fā)者生成的對應(yīng)資源在服務(wù)器端的唯一標(biāo)識符,能夠更加準(zhǔn)確的控制緩存。Last-Modified與ETag一起使用時,服務(wù)器會優(yōu)先驗(yàn)證ETag。
Etag

2 瀏覽器請求流程圖
瀏覽器第一次請求流程圖

瀏覽器再次請求時

3、用戶行為與緩存

瀏覽器緩存行為還有用戶的行為有關(guān),引用文章瀏覽器 HTTP 協(xié)議緩存機(jī)制詳解的結(jié)論

CDN緩存

CDN緩存屬于Cache服務(wù)器的一種。
CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其目的是通過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)"邊緣",使用戶可 以就近取得所需的內(nèi)容,解決Internet網(wǎng)絡(luò)擁塞狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點(diǎn)分布不均等 原因,解決用戶訪問網(wǎng)站的響應(yīng)速度慢的根本原因。

  通過上圖,我們可以了解到,使用了CDN緩存后的網(wǎng)站的訪問過程為:
  1)、用戶向?yàn)g覽器提供要訪問的域名;
  2)、瀏覽器調(diào)用域名解析庫對域名進(jìn)行解析,由于CDN對域名解析過程進(jìn)行了調(diào)整,所以解析函數(shù)庫一般得到的是該域名對應(yīng)的CNAME記錄,為了得到實(shí)際IP地址,瀏覽器需要再次對獲得的CNAME域名進(jìn)行解析以得到實(shí)際的IP地址;在此過程中,使用的全局負(fù)載均衡DNS解析,如根據(jù)地理位置信 息解析對應(yīng)的IP地址,使得用戶能就近訪問。
  3)、此次解析得到CDN緩存服務(wù)器的IP地址,瀏覽器在得到實(shí)際的IP地址以后,向緩存服務(wù)器發(fā)出訪問請求;
  4)、若請求文件并未修改,返回304(充當(dāng)服務(wù)器的角色)。若當(dāng)前文件已過期,則緩存服務(wù)器根據(jù)瀏覽器提供的要訪問的域名,通過Cache內(nèi)部專用DNS解析得到此域名的實(shí)際IP地址,再由緩存服務(wù)器向此實(shí)際IP地址提交訪問請求
  5)、緩存服務(wù)器從實(shí)際IP地址得得到內(nèi)容以后,一方面在本地進(jìn)行保存,以備以后使用,二方面把獲取的數(shù)據(jù)返回給客戶端,完成數(shù)據(jù)服務(wù)過程;
  6)、客戶端得到由緩存服務(wù)器返回的數(shù)據(jù)以后顯示出來并完成整個瀏覽的數(shù)據(jù)請求過程。

參考文章:
1 瀏覽器 HTTP 協(xié)議緩存機(jī)制詳解
2 CDN的實(shí)現(xiàn)原理
3 寫給后端程序員的HTTP緩存原理介紹

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

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

相關(guān)文章

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

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

    bladefury 評論0 收藏0
  • [面試專題]Web緩存詳解

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

    Tikitoo 評論0 收藏0
  • 2017文章總結(jié)

    摘要:歡迎來我的個人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開啟性能優(yōu)化之旅高性能滾動及頁面渲染優(yōu)化理論寫法對壓縮率的影響唯快不破應(yīng)用的個優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁瞬開緩存網(wǎng)頁性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動 歡迎來我的個人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開啟性能優(yōu)化之旅 高性能滾動 scroll 及頁面渲染優(yōu)化 理論 | HTML寫法...

    dailybird 評論0 收藏0
  • 2017文章總結(jié)

    摘要:歡迎來我的個人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開啟性能優(yōu)化之旅高性能滾動及頁面渲染優(yōu)化理論寫法對壓縮率的影響唯快不破應(yīng)用的個優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁瞬開緩存網(wǎng)頁性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動 歡迎來我的個人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開啟性能優(yōu)化之旅 高性能滾動 scroll 及頁面渲染優(yōu)化 理論 | HTML寫法...

    hellowoody 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<