精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

透過瀏覽器看HTTP緩存

開發 前端
web端的緩存機制其實有多種,我在這里只是學習和整理了以瀏覽器為載體的HTTP緩存機制,看看它是如何工作的。

[[414810]]

作為前端開發人員,對于我們的站點或應用的緩存機制我們能做的似乎不多,但這些卻是與我們關注的性能息息相關的部分,站點沒有做任何緩存機制,我們的頁面可能會因為資源的下載和渲染變得很慢,但大家都知道去找前端去解決頁面慢的問題而不會去找服務端的開發人員。因此,了解相關的緩存機制和充分的利用它似乎就變得必不可少。

web端的緩存機制其實有多種,我在這里只是學習和整理了以瀏覽器為載體的HTTP緩存機制,看看它是如何工作的。

一、Web緩存的種類

1.1 數據庫緩存

我們可能聽說過memcached,它就是一種數據庫層面的緩存方案。數據庫緩存是指,當web應用的關系比較復雜,數據庫中的表很多的時候,如果頻繁進行數據庫查詢,很容易導致數據庫不堪重荷。為了提供查詢的性能,將查詢后的數據放到內存中進行緩存,下次查詢時,直接從內存緩存直接返回,提供響應效率。

1.2 CDN緩存

CDN緩存一般是由網站管理員自己部署,為了讓他們的網站更容易擴展并獲得更好的性能。通常情況下,瀏覽器先向CDN網關發起Web請求,網關服務器后面對應著一臺或多臺負載均衡源服務器,會根據它們的負載請求,動態將請求轉發到合適的源服務器上。從瀏覽器角度來看,整個CDN就是一個源服務器,從這個層面來說,瀏覽器和服務器之間的緩存機制,在這種架構下同樣適用。

1.3 代理服務器緩存

代理服務器是瀏覽器和源服務器之間的中間服務器,瀏覽器先向這個中間服務器發起Web請求,經過處理后(比如權限驗證,緩存匹配等),再將請求轉發到源服務器。代理服務器緩存的運作原理跟瀏覽器的運作原理差不多,只是規模更大。

1.4 瀏覽器緩存

每個瀏覽器都實現了 HTTP 緩存,我們通過瀏覽器使用HTTP協議與服務器交互的時候,瀏覽器就會根據一套與服務器約定的規則進行緩存工作。

1.5 應用層緩存

應用層緩存是指我們在代碼層面上做的緩存。通過代碼邏輯,把曾經請求過的數據或資源等,緩存起來,再次需要數據時通過邏輯上的處理選擇可用的緩存的數據。

二、為什么需要瀏覽器緩存?我們需要做些什么?

我們知道通過HTTP協議,在客戶端和瀏覽器建立連接時需要消耗時間,而大的響應需要在客戶端和服務器之間進行多次往返通信才能獲得完整的響應,這拖延了瀏覽器可以使用和處理內容的時間。這就增加了訪問服務器的數據和資源的成本,因此利用瀏覽器的緩存機制重用以前獲取的數據就變成了性能優化時需要考慮的事情。

那么有什么建議嗎?當然。

為每個資源指定一個明確的緩存策略,用以定義資源是否可以緩存,由誰來緩存,可以緩存多久,并且在緩存時間到期時如何有效地重新驗證。當服務器返回一個響應時,它需要在響應頭中提供Cache-Control和ETag。

說到瀏覽器中的緩存機制,其實就相當于HTTP協議定義的緩存機制,因為瀏覽器為我們實現了它。一般情況下我們會想到到HTTP響應頭中的Expires,Cache-Control,Last-Modified.If-Modified-Since,Etag這樣的與緩存相關的響應頭信息。

但是這里我們說服務器返回一個響應時提供必要的Cache-Control和Etag即可。這是為什么呢?

因為Cache-Control與Expires的作用一致,Last-Modified與ETag的作用也相近。但它們有以下區別:

現在默認瀏覽器均默認使用HTTP 1.1,所以Expires和Last-Modified的作用基本可以忽略,具備Cache-Control和Etag即可。

當然用戶的行為也會影響瀏覽器的緩存,像這樣:

但我們先不考慮用戶的操作的影響,來看看服務器提供Cache-Control和ETag響應頭來進行的緩存是如何工作的。  

三、使用Etag驗證緩存的HTTP響應

通常情況下,請求一個資源的過程大概是這樣的:

我在 再看Ajax  中整理了HTTP請求的請求頭和響應頭的一些參數,這里就看下Etag的作用。

3.1 Etag的主要作用

服務器通過 ETag HTTP 頭傳遞驗證碼,大概是像‘‘x123cef’’這樣的字符串。當瀏覽器在資源過期后再次請求時,瀏覽器默認會通過If-None-Match傳遞Etag的驗證碼,通過驗證碼可以進行高效的資源更新檢查:如果資源未更改,則不會傳輸任何數據。 

Etag就主要用來在響應過期之后,驗證資源是否被修改。

3.2 Etag的工作原理

如上圖,服務器在第一次返回響應的時候設置了緩存的時間120s,假設瀏覽器在這120s經過之后再次請求服務器相同的資源,首先,瀏覽器會檢查本地緩存并找到之前的響應,不幸的是,這個響應現在已經’過期’,無法在使用。此時,瀏覽器也可以直接發出新請求,獲取新的完整響應,但是這樣做效率較低,因為如果資源未被更改過,我們就沒有理由再去下載與緩存中已有的完全相同的字節。

于是就到了Etag發揮作用的時候了,通常服務器生成并返回在Etag中的驗證碼,常常是文件內容的哈希值或者某個其他指紋碼。客戶端不必了解指紋碼是如何生成的,只需要在下一個請求中將其發送給服務器(瀏覽器默認會添加):如果指紋碼仍然一致,說明資源未被修改,服務器會反悔304 Not Modified,這樣我們就可以跳過下載,利用已經緩存了的資源,并且該資源會繼續緩存120s。就像這樣:

四、什么是Cache-Control?如何定義Cache-Control?

服務器響應瀏覽器請求時響應頭中的Cache-Control響應頭使得每個資源都可以通過 Cache-Control HTTP 頭來定義自己的緩存策略,Cache-Control 指令用來告訴我們,那個資源在什么條件下可以緩存,以及可以緩存多久。

4.1 Cache-Control頭參數的含義(響應頭中的Cache-Control)

    1 no-cache : 表示必須先與服務器確認返回的響應是否被更改,然后才能使用該響應來滿足后續對同一個網址的請求。因此,如果存在合適的驗證令牌 (ETag),no-cache 會發起往返通信來驗證緩存的響應,如果資源未被更改,可以避免下載。

    2 no-store : 禁止緩存任何響應,也就是說每次用戶請求資源時,都會向服務器發送一個請求,每次都會下載完整的響應。

    3 public : 如果響應被標記為public,即使有關聯的 HTTP 認證,甚至響應狀態碼無法正常緩存,響應也可以被緩存。

    4 private : 瀏覽器可以緩存private響應,但是通常只為單個用戶緩存,因此,不允許任何代理服務器對其進行緩存 。比如,用戶瀏覽器可以緩存包含用戶私人信息的 HTML 網頁,但是 CDN 不能緩存。

    5 max-age :  用來設置資源被緩存的最長時間(單位是秒)。

4.2 如何使用Cache-Control

通常,我們可以通過下圖的流程來設置合適的響應頭的Cache-Control頭。

五、已經緩存的響應,如何更新或廢棄?

一般情況下,瀏覽器發出的所有 HTTP 請求會首先被路由到瀏覽器的緩存,以查看是否緩存了可以用于實現請求的有效響應。如果有匹配的響應,會直接從緩存中讀取響應,這樣就避免了網絡延遲以及傳輸產生的數據成本。然而,如果我們希望更新或廢棄已緩存的響應,該怎么辦?

假設我們已經告訴訪問者某個 CSS 樣式表緩存長達 24 小時 (max-age=86400),但是設計人員剛剛提交了一個更新,我們希望所有用戶都能使用。我們該如何通知所有訪問者緩存的 CSS 副本已過時,需要更新緩存?

實際上以前沒有請求過該資源的新的用戶會得到更新的資源,但是請求過資源的用戶將在過期時間達到之前一直得到舊的被緩存的資源,直到他手動的去清理了瀏覽器的緩存。手動清理瀏覽器緩存這種事可能只有程序員才會做,那么我們要怎么做才能讓用戶得到更新后的資源呢?

其實很簡單,我們可以在資源的內容更改后,更改資源的網址,強制用戶下載新響應。比如在資源鏈接后添加參數:

六、對于緩存機制,現在可以做的有哪些?

我在瀏覽資料的時候發現了一個caching checklist,比較具有參考價值,我們可以遵循建議合理的利用緩存機制:

    1 使用一致的網址:如果在不同的網址上提供相同的內容,那么將會多次獲取和存儲相同的內容。提示:網址是區分大小寫的!

    2 確保服務器提供驗證碼 (ETag):通過驗證碼,如果服務器上的資源未被更改,就不必傳輸相同的字節。

    3 確定代理緩存可以緩存哪些資源:對所有用戶的響應完全相同的資源很適合由 CDN 或其他代理緩存進行緩存。

    4 確定每個資源的最優緩存周期:不同的資源可能有不同的更新要求。審查并確定每個資源適合的 max-age。

    5 確定網站的最佳緩存層級:對 HTML 文檔組合使用包含內容指紋碼的資源網址以及短時間或 no-cache 的生命周期,可以控制客戶端獲取更新的速度。

    6 變動最小化:有些資源的更新比其他資源頻繁。如果資源的特定部分(例如 JavaScript 函數或一組 CSS 樣式)會經常更新,應考慮將其代碼作為單獨的文件提供。這樣,每次獲取更新時,剩余內容(例如不會頻繁更新的庫代碼)可以從緩存中獲取,確保下載的內容量最少。 

責任編輯:龐桂玉 來源: Web開發
相關推薦

2017-05-15 13:40:20

瀏覽器http緩存機制

2019-08-16 10:54:03

本地存儲javascripthttp緩存

2015-10-27 13:37:14

瀏覽器HTTP緩存

2017-05-19 08:05:08

瀏覽器緩存HTTP

2017-04-26 14:15:35

瀏覽器緩存機制

2019-01-03 13:09:58

瀏覽器緩存原理

2009-07-10 18:15:24

HTTP頭

2013-02-21 16:03:52

瀏覽器

2018-08-07 10:44:50

緩存技術瀏覽器

2020-07-16 08:04:21

瀏覽器緩存策略

2021-06-01 09:12:47

前端瀏覽器緩存

2011-05-06 09:36:16

動態頁面

2012-07-04 17:00:06

獵豹瀏覽瀏覽器

2020-12-29 09:56:29

瀏覽器緩存HTTP

2020-10-29 11:04:28

緩存瀏覽器LocalStorag

2018-11-30 09:00:19

html5cssjavascript

2020-03-11 20:42:34

瀏覽器緩存機制

2022-03-24 08:31:25

Web性能優化瀏覽器緩存API封裝

2021-07-22 09:55:28

瀏覽器前端緩存

2012-03-20 11:31:58

移動瀏覽器
點贊
收藏

51CTO技術棧公眾號

欧美 日韩 国产 在线| 久久久91视频| 成人av在线播放| 一区二区国产视频| 免费在线成人av| 6—12呦国产精品| 精品成人在线| 中文字幕亚洲欧美日韩2019| 国产一级免费大片| 少妇视频在线观看| 国产精品国产精品国产专区不蜜 | 五月天国产在线| 中文字幕精品在线不卡| 91精品国产91久久久久青草| 人与嘼交av免费| 国偷自产av一区二区三区| 欧美性生活一区| 国产欧美日韩网站| 亚洲麻豆精品| 97精品国产97久久久久久久久久久久| 国产精选久久久久久| 九九视频免费看| 欧美综合在线视频观看| 亚洲福利精品在线| 亚洲高清av一区二区三区| 成人免费看视频网站| 一区二区三区精品视频在线| 日韩av在线电影观看| 日韩一区二区三区在线观看视频 | 国产精品视频自拍| 毛片视频网站在线观看| 午夜日韩电影| 久久久精品免费| 国产伦理片在线观看| 高清精品xnxxcom| 宅男噜噜噜66一区二区66| 日韩亚洲在线视频| 高端美女服务在线视频播放| 亚洲欧美偷拍另类a∨色屁股| 日韩视频精品| 免费黄色片在线观看| 99久久99久久精品免费观看| 亚洲伊人第一页| 91精东传媒理伦片在线观看| 日本不卡在线视频| 日韩免费视频在线观看| 精品国产免费观看| 国产精品尤物| 5278欧美一区二区三区| 久久免费视频精品| 欧美网站在线| 欧美精品xxx| 久草免费在线视频观看| 欧美一区二区| 美女性感视频久久久| 免费精品在线视频| 外国成人免费视频| 日韩亚洲欧美中文在线| 国内毛片毛片毛片毛片毛片| 色喇叭免费久久综合网| xvideos亚洲人网站| 麻豆网址在线观看| 欧美激情综合色综合啪啪| 色综合导航网站| 精品亚洲永久免费| 亚洲青色在线| 欧美在线日韩在线| 青青视频在线免费观看| 日韩国产欧美在线播放| 国产精品亚洲自拍| 国产麻豆精品一区| 成人丝袜18视频在线观看| 国产精品一区而去| 欧美黄色小说| 欧美国产1区2区| 最近中文字幕免费mv| dj大片免费在线观看| 亚洲在线观看免费| 337p粉嫩大胆噜噜噜鲁| 全球最大av网站久久| 欧美浪妇xxxx高跟鞋交| av不卡中文字幕| 亚洲精品动态| 中文字幕亚洲无线码a| 顶级黑人搡bbw搡bbbb搡| 国产精品豆花视频| 日本高清不卡在线| 国产伦子伦对白视频| 国产91丝袜在线播放| 麻豆精品视频| 免费大片在线观看www| 亚洲一区视频在线| 日av中文字幕| 欧美三级一区| 国产亚洲精品久久| 久久久久久久久久综合| 欧美一级久久| 91老司机在线| 飘雪影院手机免费高清版在线观看| 亚洲国产激情av| 六月婷婷激情综合| 日韩av一级| 精品成人一区二区三区四区| 欧美一区二区三区粗大| 狠狠88综合久久久久综合网| 国产激情久久久久| 亚洲AV无码乱码国产精品牛牛| 久久综合久久综合久久综合| 麻豆映画在线观看| 精品3atv在线视频| 精品国免费一区二区三区| 成人性生交大片免费看无遮挡aⅴ| 国产精品99一区二区| 国产精品视频白浆免费视频| 欧美 日韩 国产 在线| 亚洲欧美一区二区三区久本道91| 50路60路老熟妇啪啪| 亚洲视频三区| www.色综合| 无码人妻av免费一区二区三区 | 99reav在线| 天涯成人国产亚洲精品一区av| 嫩草视频免费在线观看| 欧美日韩伦理| 日本成人激情视频| 午夜av免费在线观看| 一区av在线播放| 制服丝袜中文字幕第一页| 国产精品嫩草影院在线看| 亚州精品天堂中文字幕| 亚洲天堂中文在线| 国产日韩一级二级三级| 午夜肉伦伦影院| 久久久久97| 欧美日韩第一页| 国产日本精品视频| 中文字幕一区二| 视频二区在线播放| 日本不卡高清| 国产精品视频一区国模私拍| 巨骚激情综合| 91成人网在线| 亚洲精品国产熟女久久久| 国产精品入口66mio| 精品国产福利| 麻豆理论在线观看| 日韩精品999| 国产亚洲欧美在线精品| 国产日韩视频一区二区三区| 不卡av免费在线| 成人3d精品动漫精品一二三| 国产精品白嫩初高中害羞小美女| 国产有码在线| 欧美在线一二三四区| 国产午夜精品久久久久久久久| 丝袜国产日韩另类美女| 日韩国产欧美精品| 日韩电影精品| 久久精品久久精品亚洲人| 国产精品羞羞答答在线| 亚洲精品视频在线看| 特级特黄刘亦菲aaa级| 在线日韩中文| 欧美日韩视频在线一区二区观看视频| 依依综合在线| 一区二区av在线| 97成人在线观看| 亚洲日本韩国一区| 日本美女视频网站| 欧美一级久久| 最新不卡av| 精品一区二区三区亚洲| 久久久久亚洲精品成人网小说| 日韩性xxxx| 欧美在线高清视频| 18岁成人毛片| 99久久夜色精品国产网站| 青青青国产在线视频| 999成人网| 成人在线视频电影| 日韩在线影院| 久久亚洲私人国产精品va| 蜜桃av中文字幕| 一本到一区二区三区| 久草手机视频在线观看| 成人小视频在线观看| 欧美激情成人网| 亚洲精品二区三区| 久久影视中文粉嫩av| 福利一区二区三区视频在线观看| 欧美男插女视频| 欧美色视频免费| 欧美一区二区三区播放老司机| 国产无遮挡又黄又爽在线观看| 久久久久亚洲综合| aaaaaaaa毛片| 日本少妇一区二区| 久久艹国产精品| 欧美日韩伦理| 精品免费日产一区一区三区免费| 欧美三级电影网址| 97超级碰碰碰久久久| 老司机午夜在线| 亚洲男人av在线| h狠狠躁死你h高h| 91久久精品网| 日产电影一区二区三区| 最新欧美精品一区二区三区| 人妻丰满熟妇aⅴ无码| 国产麻豆成人精品| 三级a在线观看| 亚洲视频大全| 中文字幕第一页亚洲| 国产欧美高清视频在线| 成人黄动漫网站免费| 欧美日韩破处视频| 日韩av电影手机在线| 男男gaygays亚洲| 久久久av网站| 第一视频专区在线| 日韩av在线一区| 国产xxxx孕妇| 欧美久久久影院| 国产情侣小视频| 福利视频第一区| 国产第一页第二页| 亚洲精品videosex极品| 最新黄色av网址| 国产清纯在线一区二区www| 你懂的在线观看网站| 国产酒店精品激情| 久久精品亚洲天堂| 裸体在线国模精品偷拍| 三年中国国语在线播放免费| 另类亚洲自拍| 久久综合九色综合88i| 国产精品99一区二区| 99热这里只有精品免费| 自产国语精品视频| 99久久久无码国产精品性色戒| 日本激情一区| 亚洲精品白虎| 日韩国产专区| 亚洲欧美日韩不卡一区二区三区| 精品不卡一区| 神马影院一区二区| 精品一级毛片| 亚洲精品中文字幕乱码三区不卡| 国产日韩视频在线| 日韩欧美亚洲日产国产| 国产亚洲精品美女久久久久久久久久| 免费一区二区三区| 国产一区二区观看| 图片区小说区区亚洲五月| 日韩国产欧美一区二区| 日本黄色播放器| 欧美一区成人| 黄网站欧美内射| 香蕉国产精品偷在线观看不卡| av网站在线观看不卡| 日韩影院在线观看| 伊人网在线综合| 国产精品18久久久久久久久| 亚洲少妇中文字幕| av不卡一区二区三区| 亚洲乱码国产乱码精品精大量| 久久久99精品久久| 人妻无码一区二区三区免费| 亚洲免费观看在线视频| 欧美精品一区二区蜜桃| 亚洲电影在线免费观看| 男人午夜免费视频| 欧美日韩在线观看一区二区| 国产熟女一区二区三区四区| 欧美成人a∨高清免费观看| 三级网站免费观看| 中文字幕日韩欧美在线视频| 黄色一级片在线观看| 欧美激情一区二区三区久久久| 欧美少妇精品| 国产精品自拍视频| av动漫精品一区二区| 欧美精品一区三区在线观看| 四季av一区二区三区免费观看| 国产精品视频一二三四区| 日韩视频久久| 中文字幕免费高清在线| 国产成人精品免费| 伊人网在线视频观看| 亚洲图片激情小说| 中文字幕亚洲精品一区| 欧美日韩国产一级| 色屁屁草草影院ccyycom| 国产亚洲精品久久久久久| 日韩123区| 国产精品v片在线观看不卡| 综合中文字幕| 特级西西444www大精品视频| 狠狠噜噜久久| 中文字幕第100页| gogogo免费视频观看亚洲一| 青青青视频在线播放| 精品日本高清在线播放 | 日韩免费福利电影在线观看| 欧美成人免费| 欧美激情精品久久久久| 欧美激情三区| 欧美专区一二三| 国产精品红桃| 亚洲欧美手机在线| 欧美精彩视频一区二区三区| 日本熟伦人妇xxxx| 91麻豆精品国产91久久久更新时间| 香港三日本三级少妇66| 欧美成人免费在线视频| 亚洲日本在线观看视频| 极品尤物一区二区三区| 欧美日韩理论| 亚洲欧美国产中文| 久久综合五月天婷婷伊人| 免费毛片在线播放免费| 欧美日韩高清一区二区三区| 五月天婷婷激情网| 日韩视频欧美视频| 日韩一区二区三区免费视频| 久久精品二区| 99riav1国产精品视频| 手机在线播放av| 日韩码欧中文字| 最近中文字幕在线视频| 亚洲欧美资源在线| 另类专区亚洲| 久久久水蜜桃| 国产精品一二| 亚洲成人日韩在线| 欧美日韩国产激情| 蜜桃视频久久一区免费观看入口| 欧美成人午夜激情视频| 亚洲精品66| 一区二区三区四区在线视频| 日韩av电影天堂| 无码人妻aⅴ一区二区三区69岛| 欧美午夜丰满在线18影院| 蜜桃视频久久一区免费观看入口| 九色精品美女在线| 99久久人爽人人添人人澡| 男女裸体影院高潮| 国产成人午夜视频| 久草视频精品在线| 亚洲а∨天堂久久精品9966| 白白色在线观看| 国产亚洲一区二区三区在线播放 | 亚洲国产精品ⅴa在线观看| 国产免费一区二区三区四区五区| 亚洲久久久久久久久久| 成人黄色免费短视频| 欧美一区免费视频| 蜜桃在线一区二区三区| 91香蕉一区二区三区在线观看| 在线不卡一区二区| 午夜伦理在线视频| 丁香婷婷久久久综合精品国产 | 亚洲资源网你懂的| 国产精品99久久免费黑人人妻| 国产欧美一区二区精品秋霞影院 | 蜜桃av在线播放| 美国av一区二区三区| 日韩国产在线一| 午夜爽爽爽男女免费观看| 欧美大片拔萝卜| 亚洲女同志freevdieo| 日韩av高清| 国产原创一区二区| 四虎永久在线精品| 亚洲欧美国产一本综合首页| 国产亚洲欧美日韩精品一区二区三区 | 国产成人av免费| 久久精品青青大伊人av| silk一区二区三区精品视频 | 精品久久国产97色综合| 理论片午夜视频在线观看| 日韩国产伦理| 国产成人一区在线| 一级黄色av片| 久久综合久久美利坚合众国| 极品尤物一区| 亚洲色图久久久| 亚洲福中文字幕伊人影院| 二区三区在线| av成人在线电影| 久久国产88| 欧美三级日本三级| 亚洲情综合五月天| 久久在线观看| 国产欧美高清在线| 一区二区三区四区在线| 毛片免费在线| av资源一区二区| 男女男精品网站| 五月天综合在线|