国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

從未如此簡單:5分鐘搞懂 HTTP 緩存機制

新聞 前端
HTTP 緩存可以說是HTTP性能優化中簡單高效的一種優化方式了,緩存是一種保存資源副本并在下次請求時直接使用該副本的技術,當 web 緩存發現請求的資源已經被存儲,它會攔截請求,返回該資源的拷貝,而不會去源服務器重新下載。

  [[317170]]

什么是 HTTP 緩存

HTTP 緩存可以說是HTTP性能優化中簡單高效的一種優化方式了,緩存是一種保存資源副本并在下次請求時直接使用該副本的技術,當 web 緩存發現請求的資源已經被存儲,它會攔截請求,返回該資源的拷貝,而不會去源服務器重新下載。

一個優秀的緩存策略可以縮短網頁請求資源的距離,減少延遲,節省網絡流量,并且由于緩存文件可以重復利用,降低網絡負荷,提高客戶端響應。

所以,學會利用 HTTP 緩存是很有必要的。

在此,我會向大家系統的介紹HTTP緩存機制,期望對各位正確的理解HTTP緩存有所幫助。

緩存策略

在闡述HTTP不同緩存策略之前,我們需要知道用戶刷新/訪問行為 的手段分成三類:

  • 在URI輸入欄中輸入然后回車/通過書簽訪問
  • F5/點擊工具欄中的刷新按鈕/右鍵菜單重新加載
  • Ctl+F5 (完全不使用HTTP緩存)

不同的刷新手段,會導致瀏覽器使用不同的緩存策略,我們下面會分析到

HTTP 緩存主要是通過請求和響應報文頭中的對應 Header 信息,來控制緩存的策略。

響應頭中相關字段為Expires、Cache-Control、Last-Modified、Etag。

HTTP緩存的類型很多,根據是否需要重新向服務器發起請求來分類包括兩種:強制緩存和對比緩存

假設瀏覽器有一個緩存數據庫用于本地緩存,先看看瀏覽器請求資源的情況:

从未如此简单:5分钟搞懂 HTTP 缓存机制

強制緩存

在瀏覽器已經緩存數據的情況下,使用強制緩存去請求數據的流程是這樣的:

从未如此简单:5分钟搞懂 HTTP 缓存机制

從流程圖可以看到,強制緩存,在緩存數據未失效的情況下,可以直接使用緩存數據,不需要再請求服務器,那么瀏覽器是如何判斷緩存數據是否失效呢?

對于強制緩存來說,響應header中會有兩個字段來標明失效規則(Expires/Cache-Control):

  • Expires:

Expires 是 HTTP1.0 的產物了,現在默認瀏覽器均默認使用 HTTP 1.1,所以它的作用基本忽略。但是很多網站還是對它做了兼容。它的值為服務端返回的到期時間,即下一次請求時,請求時間小于服務端返回的到期時間,直接使用緩存數據。

但有一個問題是到期時間是由服務端生成的,如果客戶端時間跟服務器時間不一致,這就會導致緩存命中的誤差。

在 HTTP 1.1 的版本,Expires 被 Cache-Control 替代。

  • Cache-Control:

Cache-Control 是最重要的規則。常見的取值有 private、public、no-cache、max-age,no-store,默認為 private。

1) max-age:用來設置資源(representations)可以被緩存多長時間,單位為秒;

2) s-maxage:和 max-age 是一樣的,不過它只針對代理服務器緩存而言;

3) public:指示響應可被任何緩存區緩存;

4) private:只能針對個人用戶,而不能被代理服務器緩存;

5) no-cache:強制客戶端直接向服務器發送請求,也就是說每次請求都必須向服務器發送。服務器接收到請求,然后判斷資源是否變更,是則返回新內容,否則返回304,未變更。這個很容易讓人產生誤解,使人誤以為是響應不被緩存。實際上Cache-Control:  no-cache是會被緩存的,只不過每次在向客戶端(瀏覽器)提供響應數據時,緩存都要向服務器評估緩存響應的有效性。

6) no-store:禁止一切緩存(這個才是響應不被緩存的意思)。

舉個例子,比如一個資源響應頭是:

  1. cache-control: public, max-age= 31536000 

那么這個資源會被緩存31536000秒(365天),在365天內再次請求這條數據,都會直接獲取緩存數據庫中的數據,直接使用。

那么我們試試再次訪問資源,會有以下的響應:

从未如此简单:5分钟搞懂 HTTP 缓存机制

可以看到HTTP狀態碼是200,Size這個字段顯示:disk cache,說明瀏覽器確實走了強制緩存,沒有再跟瀏覽器交互。

我們上面說了,不同的訪問/刷新手段,會使瀏覽器使用不同的緩存策略,要讓瀏覽器走強制緩存對請求方式有一個要求: 在URI輸入欄中輸入然后回車/通過書簽訪問。

對比緩存

在瀏覽器已經緩存數據的情況下,使用對比緩存去請求數據的流程是這樣的。

从未如此简单:5分钟搞懂 HTTP 缓存机制

有同學可能會問,基于對比緩存的流程下,不管是否使用緩存,都需要向服務器發送請求,那么還用緩存干什么?

這個問題,我們現在來探討一下。

對比緩存,顧名思義,需要進行比較判斷是否可以使用緩存。

瀏覽器第一次請求數據時,服務器會將緩存標識與數據一起返回給瀏覽器,瀏覽器將二者備份至緩存數據庫中。

當瀏覽器再次請求數據時,瀏覽器將備份的緩存標識發送給服務器,服務器根據緩存標識進行判斷,判斷成功后,返回304狀態碼,通知客戶端比較成功,可以使用緩存數據。

舉個例子,第一次訪問:

从未如此简单:5分钟搞懂 HTTP 缓存机制

第二次訪問:

从未如此简单:5分钟搞懂 HTTP 缓存机制

對于對比緩存來說,響應 header 中會有兩個字段來標明規則

  • Last-Modified / If-Modified-Since

服務器響應請求時,會告訴瀏覽器一個告訴瀏覽器資源的最后修改時間:Last-Modified,瀏覽器之后再請求的時候,會帶上一個頭:If-Modified-Since,這個值就是服務器上一次給的 Last-Modified 的時間,服務器會比對資源當前最后的修改時間,如果大于If-Modified-Since,則說明資源修改過了,瀏覽器不能再使用緩存,否則瀏覽器可以繼續使用緩存,并返回304狀態碼。

  • Etag  /  If-None-Match(優先級高于Last-Modified  /  If-Modified-Since)

服務器響應請求時,通過Etag頭部告訴瀏覽器當前資源在服務器的唯一標識(生成規則由服務器決定),瀏覽器再次請求時,就會帶上一個頭If-None-Match,這個值就是服務器上一次給的Etag的值,服務器比對一下資源當前的Etag是否跟If-None-Match一致,不一致則說明資源修改過了,瀏覽器不能再使用緩存,否則瀏覽器可以繼續使用緩存,并返回304狀態碼。

看個例子:第一次請求,服務器的響應頭包含了:

从未如此简单:5分钟搞懂 HTTP 缓存机制

第二次請求,瀏覽器的請求頭

从未如此简单:5分钟搞懂 HTTP 缓存机制

總結

我們再看一下HTTP緩存的一個總概流程圖:

从未如此简单:5分钟搞懂 HTTP 缓存机制

  • HTTP緩存主要分強制緩存和對比緩存
  • 強制緩存的 HTTP 相關頭部 Cache-Control,Exipres(HTTP1.0),瀏覽器直接讀本地緩存,不會再跟服務器端交互,狀態碼 200。
  • 對比緩存的 HTTP 相關頭部 Last-Modified / If-Modified-Since, Etag  /  If-None-Match (優先級比Last-Modified / If-Modified-Since高),每次請求需要讓服務器判斷一下資源是否更新過,從而決定瀏覽器是否使用緩存,如果是,則返回304,否則重新完整響應。

 

責任編輯:張燕妮 來源: 碼農富哥
相關推薦

2020-03-17 07:41:50

ApacheKafka系統

2020-09-14 11:30:26

HTTP3運維互聯網

2019-09-16 09:14:51

2024-12-11 07:00:00

面向對象代碼

2025-03-13 06:22:59

2019-06-14 09:34:59

Linux 系統 數據

2022-08-12 12:19:13

Cluster檢索集群

2017-03-30 19:28:26

HBase分布式數據

2021-06-18 07:34:12

Kafka中間件微服務

2025-01-21 07:39:04

Linux堆內存Golang

2025-01-20 08:50:00

2019-08-09 10:33:36

開發技能代碼

2021-05-28 07:38:20

內存溢出場景

2021-10-19 07:27:08

HTTP代理網絡

2012-06-28 10:26:51

Silverlight

2023-12-06 08:48:36

Kubernetes組件

2023-09-18 15:49:40

Ingress云原生Kubernetes

2024-01-16 07:46:14

FutureTask接口用法

2023-12-05 15:24:46

2023-07-16 18:49:42

HTTP網絡
點贊
收藏

51CTO技術棧公眾號

欧美色另类天堂2015| 成人一级生活片| 97超碰人人看人人 | 欧美一区二区三区系列电影| 一区二区三区欧美成人| www999久久| 亚洲精品国产品国语在线| 久久九九国产视频| 中文字幕午夜精品一区二区三区| 欧美一级片在线看| 国产69精品久久久久久久| 自拍欧美一区| 日韩福利视频在线观看| 免费成年网站| 成人久久久久| 99久久er| 午夜日韩电影| 色噜噜狠狠色综合欧洲selulu| 国产精品av在线| 国产精品一区二区三区观看 | 国内成人精品2018免费看| 91免费精品国偷自产在线| 欧美自拍视频| 欧美成人性生活| 黄色精品视频网站| 久久久精品影院| 二吊插入一穴一区二区| 亚洲精品美女久久久| 三级黄色网址| 免费成人av资源网| 茄子视频成人在线| 少妇精品视频一区二区免费看| 久久激情视频免费观看| 国产厕拍一区| 亚洲一区综合| 136国产福利精品导航网址| 国产精品免费区二区三区观看 | 日韩国产高清污视频在线观看| 佐山爱痴汉视频一区二区三区| 亚洲欧洲专区| 91在线中文字幕| 激情se五月| 精品福利在线观看| 久久爱av电影| 欧美高清一级片| 欧美人伦禁忌dvd放荡欲情| 99超碰麻豆| av不卡一区二区| 欧美大肥婆大肥bbbbb| 国产网站av| 亚洲精品国产免费| 在线观看视频你懂的| 国产精品资源站在线| 欧美性猛片aaaaaaa做受| 免费欧美电影| 亚洲高清不卡在线| 青草在线视频| 成人午夜在线免费| 欧美日韩国内自拍| 99riav视频在线观看| 成人精品视频久久久久| 日韩高清一区二区| 免费拍拍拍网站| www.色精品| 深夜影院在线观看| 尤物yw午夜国产精品视频| 欧美激情在线| 神马午夜dy888| 久久免费国产视频| 国产一区二区三区四区五区入口| 成人黄色片视频网站| 精品国产一区二区三区小蝌蚪| 中文字幕亚洲无线码在线一区| 九九精品调教| 中文字幕亚洲欧美日韩在线不卡| 日本在线www| 日韩毛片一二三区| 3p在线观看| 中文字幕中文字幕中文字幕亚洲无线| 96精品久久久久中文字幕| 国产最新精品精品你懂的| 最美情侣韩剧在线播放| 久久国产99| 日韩伦理av| 日韩欧美综合一区| 日韩欧美中文字幕一区二区三区| 欧美与黑人午夜性猛交久久久| 亚洲综合色网| 中文字幕综合在线观看| 国产精品美女久久久久av爽李琼| 天堂√在线观看一区二区| 国产欧美精品一区aⅴ影院| 成年人在线免费观看视频网站| 欧美一区二区三区成人| 日韩精品五月天| 久草福利资源站| 国产一区二区三区视频| 午夜精品久久久久久久四虎美女版| 日韩精品视频在线| 中文字幕亚洲精品在线观看| 国产亚洲亚洲国产一二区| av一区和二区| 天堂一区二区在线免费观看| 亚洲女色av| 日韩精品中文字| 国产欧美日韩不卡免费| 久久久久久蜜桃一区二区| 新呦u视频一区二区| 成人自拍视频在线观看| 日韩欧美高清在线播放| 中文久久久久久| 国产亚洲欧美日韩美女| 一级欧洲+日本+国产| 日韩欧美第二区在线观看| 国产成人在线一区| 亚洲在线黄色| 欧美xxx性| 欧美极品少妇全裸体| 久久夜色精品国产欧美乱极品| 亚洲女人av| 91福利国产成人精品播放| 亚洲自拍偷拍网址| 日韩欧美成人区| 99热这里只有精品首页 | 亚洲天堂av高清| 一区二区三区在线观看国产| 久久99精品视频| 国产精品久久久乱弄| 亚洲精品国产setv| 青青草视频国产| 久久777国产线看观看精品| 精品五月天久久| 丁香激情综合国产| 国产精品久久久久久久龚玥菲| 欧美色18zzzzxxxxx| 青青在线视频观看| 日韩美女视频免费在线观看| 91亚洲精品一区二区乱码| 99精品女人在线观看免费视频 | www.xxx麻豆| 奇米一区二区三区四区久久| 欧美男同性恋视频网站| 国产精品国模大尺度视频| 日本美女一区二区三区视频| 天堂av一区二区三区在线播放| 亚州av电影免费在线观看| 色综合久久天天综线观看| 国产欧美精品va在线观看| 国产视频在线观看一区二区| 国产精品素人一区二区| 亚洲一区免费| 91精品影视| 狂野欧美性猛交xxxxx视频| 日韩欧美亚洲| 原千岁中文字幕| 免费av手机在线观看| 亚洲欧洲国产日韩精品| 国产精品一区久久| 欧美日韩电影在线播放| 国产一区二区三区欧美| 欧美日韩大陆在线| 亚洲一本大道在线| 国产东北露脸精品视频| 曰本一区二区三区视频| 老鸭窝毛片一区二区三区| 一区二区三区在线电影| 免费一区二区| 国产精品一区二区精品视频观看| 麻豆成全视频免费观看在线看| 四虎在线免费观看| 成人福利视频网| 黄页在线免费看| 国产日韩一区二区三区| 免费毛片aaaaaa| 色老板在线视频| 亚洲成人av高清| 日韩精品一二| 四虎在线观看| 中出在线观看| 最新黄色片网站| 亚洲社区在线| 男女小视频在线观看| 美女激情网站| 亚洲黄色一区二区三区| 国产精品久久久久久久龚玥菲 | 91久久影院| www.-级毛片线天内射视视| 日本一区二区在线免费播放| 欧美午夜精品久久久久久蜜| 少妇高潮露脸国语对白| 欧美色片在线观看| 亚洲永久视频| 欧美精品777| 茄子视频成人在线观看| 国产福利图片| 97精品资源在线观看| 亚洲在线电影| 欧美精品高清视频| 成人夜晚看av| 992tv在线观看在线播放|