HTTP快取機制與原理解析

2021-10-03 18:03:28 字數 1150 閱讀 2030

http報文分為兩個部分

body:用來存放http傳輸的真正資料

http快取涉及到三個主主體:客戶端瀏覽器,快取資料庫和服務端。而http快取又分為兩種:

其基本思想就是:當資料不存在於快取資料庫時,此時會直接去請求伺服器,並把得到的結果寫入快取資料庫中;若資料存在快取資料庫且未過時,則直接去快取資料庫中查詢,完成這次請求。

流程如下:

還是比較容易理解。另外需要注意的是:請求伺服器資源成功的響應碼是200,而從快取資料庫中請求成功的響應碼是304。

和強快取相關的首部欄位有三個:

1.expire:規定快取過期的絕對時間,由於客戶端時間和服務端時間存在偏差,所以在http1.1之後的版本一般來說都不會使用這個欄位了

2.cache-control:與快取相關字段,常用的幾個取值有:

這是強快取的時候,那當快取失效之後怎麼辦?此時就要進行協商快取了

當請求的值在快取資料庫中失效,或者首部欄位中明確要求每次讀取快取後都要去服務端進行一次驗證,並且不能使用過期資料時,使用協商快取

協商快取的機制其實也很簡單:檢視快取資料庫中對應資源快取是否已經過期,如果是的話,在使用快取資料之前還要向服務端傳送一次head請求,主要用來檢驗對應資料是否已經被更新過,如果沒有的話,則可以直接使用快取資料庫中的過期值,如果已經被更新過,那麼就要從服務端中重新請求新值。

檢驗是否過期的方法很簡單:

在第一次從服務端獲取資源時,響應報文首部有乙個last-modified欄位,用於記錄這個資源的最近一次更新時間,那在傳送head請求確認的時候,會寫入乙個if-modified-since欄位,這個欄位的值就是接受到的last-modified。在服務端中檢查這個if-modified-since值和last-modified值是否相等,如果相等說明沒有會被更新,可以放心使用快取資料庫的值,如果不相等,說明已經被更新過了,此時從服務端請求新值。

總結就是:

詳解HTTP的快取機制與原理

快取的重要性不言而喻,通過網路請求資源緩慢並且降低了客戶端的使用者體驗,增添了服務端的負擔。很多短期之內不會經常發生變化的資源檔案沒必要每次訪問都想服務端進行資料請求,而快取策略的使用就是為了改善客戶端的呈現時間,降低服務端的負擔。對於http的快取機制來說,策略體現在http的頭部資訊的字段上,而...

HTTP快取機制及原理

前言 http 快取機制作為 web 效能優化的重要手段,對於從事 web 開發的同學們來說,應該是知識體系庫中的乙個基礎環節,同時對於有志成為前端架構師的同學來說是必備的知識技能。但是對於很多前端同學來說,僅僅只是知道瀏覽器會對請求的靜態檔案進行快取,但是為什麼被快取,快取是怎樣生效的,卻並不是很...

Http快取機制及原理

http 快取機制作為 web 效能優化的重要手段,但是對於很多前端同學來說,僅僅只是知道瀏覽器會對請求的靜態檔案進行快取,但是為什麼被快取,快取是怎樣生效的,卻並不是很清楚。http報文就是瀏覽器和伺服器間通訊時傳送及響應的資料塊。請求報文 request 和響應報文 response http請...