快取驗證Last Modified和Etag的使用

2021-10-23 13:02:31 字數 2054 閱讀 1440

快取工作示意圖:

瀏覽器建立乙個請求,然後請求到達本地快取,如果找到了則直接返回給瀏覽器,如果沒有,可能會經過**服務,然後去**快取中去找,如果命中,則直接返回,如果沒有,才會到源伺服器進行請求。

在http協議裡面,資料的驗證方式,主要有兩個驗證頭:last-modified 和 etag。

last-modified 配合last-modified-since或者if-unmodified-since使用,對比上次修改的時間驗證資源是否需要更新。

etag 是乙個更加嚴格的資料驗證。資料簽名[根據資料的內容進行簽名,如果資料內容變了,etag也會變],最典型的etag資料簽名就是hash計算。配合if-match或者if-non-match使用,對比資源的簽名判斷是否使用快取。

)2、重啟服務重新整理瀏覽器

3、再重新整理瀏覽器,結果可以看到,它還是去訪問了伺服器。

它的requset headers顯示如下

它的repsonse裡面是有內容的,的但是我們的內容沒有做更改,我們這時只需要告訴瀏覽器不需要返回實際的內容,只需要去讀取快取就好了。這時我們可以將server.js修改為如下:

)然後再此重新整理會看到如下介面,304表示的就是從快取裡面讀取內容。如果將上述的no-cache去掉,結果和之前一樣,但是如果將no-cache換成no-store,就不會和快取有任何關係,每次傳送請求都會認為那是乙個全新的請求,去請求成功,返回200。

快取驗證 Last Modified Etag

上篇文章我們知道,當我們給catch control 設定了 no catch 後,每次瀏覽器對這個資源的請求時,都會到伺服器端進行資源驗證,驗證完之後,如果確定這個資源可以使用快取,瀏覽器才會讀取本地的快取。下面是瀏覽器請求資料過程中關於快取的步驟。進行資料驗證,主要是有兩個header last...

MyBatis 快取詳解 一級快取驗證

基於mybatis standalone 工程,注意演示一級快取需要先關閉二級快取,localcachescope 設定為session 判斷是否命中快取 如果再次傳送sql 到資料庫執行,說明沒有命中快取 如果直接列印物件,說明是從記憶體快取中取到了結果。1 在同乙個session 中共享 2 不...

快取驗證Last Modified和Etag的使用

快取工作示意圖 在http協議裡面,資料的驗證方式,主要有兩個驗證頭 last modified 和 etag。last modified 配合last modified since或者if unmodified since使用,對比上次修改的時間驗證資源是否需要更新。etag 是乙個更加嚴格的資料...