HTTP 快取策略

2021-09-24 07:43:39 字數 1630 閱讀 7307

前端開發的同學大家都知道,專案中的靜態檔案等資訊,都要做快取處理,這裡,我們就來說一下http的快取策略。

快取,顧名思義,其實就把是拿到的資源存起來,下次要用的時候就可以直接使用啦。有什麼作用呢?重用已獲取的資源能夠有效的提公升**與應用的效能。

快取其實是乙個很廣義的概念,用到的地方很多,當然作用只有乙個,就是利用空間換取時間,讀取本地的資源當然會比取遠端讀取資源來得快得多。

快取可以在很多地方:

這裡,我們主要講的是瀏覽器快取~

當我們搭建乙個**的時候,其實一些靜態資源的改動並不會很經常,比如:js、css、等,這種資源,其實我們可以快取到使用者的本地,下次訪問這些資源的時候,直接從命中快取即可,即加快使用者訪問速度,又可以減少伺服器的壓力。

http的快取,分為兩種:強快取 & 協商快取

強快取,即使用者請求資源的時候,發現資源為強快取型別,直接獲取快取資料即可。

當使用者第一次請求資源時,http通過響應頭設定快取策略。瀏覽器接受到強快取的資訊之後就會把資源快取到使用者本地。

命中強快取有兩個字段,下圖為掘金某個css的響應頭。

// response 響應頭 

// 相對時間

// 絕對時間

expires: sun, 27 jan 2019

12:19:08 gmt

複製**

使用者第二次訪問資源的時候,如果快取不過期,那麼瀏覽器直接拉取快取資料即可。

那麼,當瀏覽器快取過期了怎麼辦?這時協商快取就派上用場了~

當我們訪問資源時,響應頭會攜帶協商快取相關的字段。

// response 響應頭 

// 版本號,唯一值

// 最後更新時間

last-modified: fri, 17 nov 2017

07:31:58 gmt

複製**

當強快取過期時,瀏覽器發請求的時候會攜帶協商快取對應的字段在請求頭中,伺服器根據請求頭中的資訊,如果命中快取,則返回304,否則直接請求資料即可。

// requet 請求頭

// 上一次請求的etag

// 上一次請求的last-modified

if-modified-since : fri, 17 nov 2017

07:31:58 gmt

複製**

下圖例子使用的是http 1.1,所以攜帶的是if-none-match

快取固然好用,但是在開發過程中,經常會遇到因為快取而沒有更新的情況。這裡記一下常用的兩個方案:

快取可以有效提公升請求速度,減少伺服器壓力,在專案中可以好好利用~

HTTP 快取策略

瀏覽器一般快取 css js等靜態檔案,因為這些檔案的更新頻率相對來說比較低,合理利用瀏覽器的快取對 的效能提公升有很大幫助。http快取分為兩部分,分別是本地快取和快取協商,當本地快取不生效時會啟用快取協商。http快取主要由http協議的頭 header 資訊來制定。本地快取 本地快取是指瀏覽器...

HTTP快取策略

瀏覽器一般快取 css js等靜態檔案,因為這些檔案的更新頻率相對來說比較低,合理利用瀏覽器的快取對 的效能提公升有很大幫助。http快取分為兩部分,分別是本地快取和快取協商,當本地快取不生效時會啟用快取協商。http快取主要由http協議的頭 header 資訊來制定。本地快取是指當瀏覽器請求資源...

http快取策略

http快取主要由兩種 本地快取和快取協商。優先使用本地快取,本地快取不起作用時使用快取協商。http快取主要是頭部資訊header來決定的。一 什麼是本地快取?本地快取有頭部資訊的cache control和expires來決定。cache control是個相對值常量,它有如下幾個值 no ca...