在闡述http不同快取策略之前,我們需要知道使用者重新整理/訪問行為 的手段分成三類:
不同的重新整理手段,會導致瀏覽器使用不同的快取策略,我們下面會分析到
http 快取主要是通過請求和響應報文頭中的對應 header 資訊,來控制快取的策略。響應頭中相關欄位為expires、cache-control、last-modified、etag。
http快取的型別很多,根據是否需要重新向伺服器發起請求來分類包括兩種:強制快取和對比快取假設瀏覽器有乙個快取資料庫用於本地快取,先看看瀏覽器請求資源的情況:
強制快取:在瀏覽器已經快取資料的情況下,使用強制快取去請求資料的流程是這樣的:
從流程圖可以看到,強制快取,在快取資料未失效的情況下,可以直接使用快取資料,不需要再請求伺服器,那麼瀏覽器是如何判斷快取資料是否失效呢?對於強制快取來說,響應header中會有兩個欄位來標明失效規則(expires/cache-control):
舉個例子:比如乙個資源響應頭是:
cache-control: public, max-age=31536000
那麼這個資源會被快取31536000秒(365天),在365天內再次請求這條資料,都會直接獲取快取資料庫中的資料,直接使用。那麼我們試試再次訪問資源,會有以下的響應:
可以看到http狀態碼是200,size這個字段顯示:disk cache,說明http響應報文大小是0,瀏覽器確實走了強制快取,沒有再跟瀏覽器互動。我們上面說了,不同的訪問/重新整理手段,會使瀏覽器使用不同的快取策略,要讓瀏覽器走強制快取對請求方式有乙個要求:在uri輸入欄中輸入然後回車/通過書籤訪問
在瀏覽器已經快取資料的情況下,使用對比快取去請求資料的流程是這樣的:
有同學可能會問,基於對比快取的流程下,不管是否使用快取,都需要向伺服器傳送請求,那麼還用快取幹什麼?這個問題,我們現在來**一下。對比快取,顧名思義,需要進行比較判斷是否可以使用快取。瀏覽器第一次請求資料時,伺服器會將快取標識與資料一起返回給瀏覽器,瀏覽器將二者備份至快取資料庫中。當瀏覽器再次請求資料時,瀏覽器將備份的快取標識傳送給伺服器,伺服器根據快取標識進行判斷,判斷成功後,返回304狀態碼,通知客戶端比較成功,可以使用快取資料。舉個例子:第一次訪問:
第二次訪問:
對比快取,響應header中會有兩個欄位來標明規則
值得注意的是:etag 的校驗優先順序高於 last-modified看個例子:第一次請求,伺服器的響應頭包含了
第二次請求,瀏覽器的請求頭
我們再看一下http快取的乙個總概流程圖:
5分鐘看懂串列埠通訊原理 串列埠通訊詳解
同步和非同步 usart 時鐘,資料位 通用 同步非同步收發器,使用工業標準nrz 非同步序列資料格式的外部裝置之間進行 全雙工資料交換 rs232 rs485 同步有時鐘訊號 iic spi 非同步uart 非同步序列通訊 有起始位,停止位,校驗位 在同步通訊中,資料訊號所傳輸的內容絕大部分就是 ...
一分鐘看懂資料湖架構
資料湖和資料倉儲兩者都廣泛應用於大資料儲存,但兩者之間概念不可互換。資料湖是儲存原始資料的池,目的仍沒有明確。資料倉儲儲存結構化的 已過濾 處理的資料,用於特定分析目的。兩種資料儲存架構經常被混淆,起始兩者之間差異大於共性。事實上,唯一共性都為了儲存海量資料。了解兩者 區別很重要,因為它們服務於不同...
演算法系列 5分鐘了解雜湊演算法
前言 雜湊演算法是現代密碼體系中的乙個重要組成部分。大家比較感興趣的數字貨幣,就使用了雜湊演算法。雜湊演算法簡介 雜湊 hash 演算法又稱為雜湊演算法,通過hash演算法,可以將任意長度的資訊轉換成乙個固定長度的二進位制資料,我們經常會使用十六進製制值來表示轉換後的資訊。比如,數字123,使用md...