成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

瀏覽器緩存機制個人理解

andycall / 1103人閱讀

摘要:加快頁面打開速度降低服務(wù)器壓力減少網(wǎng)絡(luò)損耗瀏覽器緩存有標簽控制一般不用,所以本文不介紹與頭信息控制兩種。是服務(wù)器端在響應(yīng)請求時用來規(guī)定資源是否需要被瀏覽器緩存以及緩存的有效時間等。

瀏覽器緩存究竟有什么作用呢?在這里我將瀏覽器緩存的作用簡單地歸結(jié)為以下幾點。

加快頁面打開速度
降低服務(wù)器壓力
減少網(wǎng)絡(luò)損耗

瀏覽器緩存有 HTML Meta 標簽控制(一般不用,所以本文不介紹)與 HTTP 頭信息控制兩種。

緩存標識字段便是 ExpiresCache-Control

Expires? 是服務(wù)器端在響應(yīng)請求時用來規(guī)定資源的失效時間。

Cache-Control 是服務(wù)器端在響應(yīng)請求時用來規(guī)定資源是否需要被瀏覽器緩存以及緩存的有效時間等。

Expires 是 HTTP 1.0 的字段,而 Cache-Control? 是 HTTP 1.1 的字段,當(dāng) Expires? 與 ?Cache-Control 同時存在時,Cache-Control 的優(yōu)先級要高于 ?Expires。

在瀏覽器緩存中,還保存了其它關(guān)于資源副本的描述字段,這些字段都是服務(wù)器返回信息頭帶過來的,如 Last-ModifiedETag。

Last-Modified 是服務(wù)器端在響應(yīng)請求時用來說明資源的最后修改時間。與之對應(yīng)的是 If-Modified-Since 字段。在服務(wù)器再驗證過程中,瀏覽器發(fā)送的 HTTP 請求的請求頭中會帶上 If-Modified-Since 字段,值為該資源 ?Last-Modified 屬性的值。

當(dāng)服務(wù)器端接收到帶有 ?If-Modified-Since 屬性的請求時,則會將 If-Modified-Since 屬性的值與被請求資源的最后修改時間做對比。如果相同,說明資源沒有新的修改,則響應(yīng) HTTP 304,瀏覽器會繼續(xù)使用原先保存的該資源的副本;如果最后修改時間比較新,則說明資源被修改過,則響應(yīng) HTTP 200,并且返回最新的資源。

ETag 是服務(wù)器端在響應(yīng)請求時用來說明資源在服務(wù)器端的唯一標識。與之對應(yīng)的是 If-None-Match 字段。在服務(wù)器再驗證過程中,瀏覽器發(fā)送的 HTTP 請求的請求頭中會帶上 If-Modified-Since 字段,值為該資源 ?Etag 屬性的值。

當(dāng)服務(wù)器端接收到帶有 ?If-None-Match 屬性的請求時,則會將 If-None-Match 屬性的值與被請求資源的唯一標識做對比。如果相同,說明資源沒有新的修改,則響應(yīng) HTTP 304,瀏覽器會繼續(xù)使用原先保存的該資源的副本;如果不同,則說明資源被修改過,則響應(yīng) HTTP 200,并且返回最新的資源。

那么當(dāng)?Last-Modified / If-Modified-Since 和?Etag / If-None-Match 同時存在是什么情況呢?

事實上,當(dāng)兩者同時存在時,Etag / If-None-Match 的優(yōu)先級要高于?Last-Modified / If-Modified-Since

最后,雖然說瀏覽器緩存對用戶體驗有極大的好處,但是作為開發(fā)者,我們在開發(fā)的時候則需要禁止這「討厭」瀏覽器緩存,我的方法是打開瀏覽器的開發(fā)者工具,在 Network 中有個 Disable cache ,鉤上就可以了,鉤上后瀏覽器會忽略掉文檔過期驗證和服務(wù)器再驗證的過程,直接向服務(wù)器請求最新的資源。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100065.html

相關(guān)文章

  • GraphQL java工程化實踐

    摘要:我在工程實踐中直接使用類作為對應(yīng)實體類的。因此我的結(jié)論是,此庫并不適用于我的工程實踐。工程實踐中對其應(yīng)用方式的考慮在的官方教程中建議針對每請求創(chuàng)建新的實例,查詢請求結(jié)束則實例們的生命周期結(jié)束。 因為自己寫過基于react的前端應(yīng)用,因此一看到GraphQL就被深深吸引,真是直擊痛點??!服務(wù)端開發(fā)一直是基于java, Spring的,因此開始研究如何在現(xiàn)有工程框架下加入graphql的支...

    MSchumi 評論0 收藏0
  • 分布式系統(tǒng)關(guān)注點——360°全方位解讀「緩存

    摘要:在一個成熟的系統(tǒng)中,能夠運用到緩存的地方其實并不是一處。那么在以終端用戶為起點,系統(tǒng)所用的數(shù)據(jù)庫為終點的這條道路上可以作為緩存設(shè)立點的位置大致有以下這些。緩存也有一系列的副作用需要考慮。 如果這是第二次看到我的文章,歡迎文末掃碼訂閱我個人的公眾號(跨界架構(gòu)師)喲~ 本文長度為3578字,建議閱讀10分鐘。堅持原創(chuàng),每一篇都是用心之作~ 此前的「伸縮性」章節(jié)結(jié)束了,此文是「高性能」章...

    alanoddsoff 評論0 收藏0
  • PHP程序員學(xué)習(xí)路線

    摘要:第一階段基礎(chǔ)階段基礎(chǔ)程序員重點把搞熟練核心是安裝配置基本操作目標能夠完成基本的系統(tǒng)安裝,簡單配置維護能夠做基本的簡單系統(tǒng)的開發(fā)能夠在中型系統(tǒng)中支持某個功能模塊的開發(fā)。本項不做重點學(xué)習(xí),除非對前端有興趣。 第一階段:基礎(chǔ)階段(基礎(chǔ)PHP程序員) 重點:把LNMP搞熟練(核心是安裝配置基本操作) 目標:能夠完成基本的LNMP系統(tǒng)安裝,簡單配置維護;能夠做基本的簡單系統(tǒng)的PHP開發(fā);能夠在P...

    genedna 評論0 收藏0
  • 前端開發(fā)周報: CSS 布局方式與JavaScript數(shù)據(jù)結(jié)構(gòu)和算法

    摘要:如果沒有學(xué)習(xí)過計算機科學(xué)的程序員,當(dāng)我們在處理一些問題時,比較熟悉的數(shù)據(jù)結(jié)構(gòu)就是數(shù)組,數(shù)組無疑是一個很好的選擇。 showImg(https://segmentfault.com/img/bVTSjt?w=400&h=300); 1、常見 CSS 布局方式詳見: 一些常見的 CSS 布局方式梳理,涉及 Flex 布局、Grid 布局、圣杯布局、雙飛翼布局等。http://cherryb...

    huhud 評論0 收藏0

發(fā)表評論

0條評論

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