HTTP請求的快取(Cache)機制

2022-08-27 17:39:13 字數 2535 閱讀 8658

先來一張圖:

####下面簡單的來描述一下http cache機制

當資源資源第一次被訪問的時候,http status返回200,在頭部攜帶當前資源的描述資訊,eg:

同時瀏覽器會將資源快取到cache目錄,並儲存檔案描述資訊。

當客戶端第二次請求資源時,會先檢查cache目錄中是否含有該資源,如果有,並且還沒到expires設定的時間,

即檔案還沒有過期,那麼此時客戶端將直接從cache目錄中讀取檔案,而不再傳送請求

####為什麼會返回上一次的資訊呢?

web伺服器在接收到請求時,會先解析header裡面的資訊,然後校驗頭部資訊。

如果該資源檔案從上次時間到現在都沒有修改或者etag資訊沒有變化,,則web伺服器將會直接返回304狀態,

從而不會在資源檔案,狀態頭部資訊如下:

```這樣,就能夠很大程度上減少網路頻寬以及提公升使用者的瀏覽器體驗。

當然,如果伺服器經過匹配發現檔案修改過了,就會將檔案資源返回,並帶上新檔案狀態資訊。

####基本字段

```expires:```

檔案在本地快取的過期時間,如果客戶端發現快取中的檔案沒有過期,則不傳送請求

```cache-control:```

cache-control指定請求和響應遵循的快取機制。

在請求訊息或響應訊息中設定cache-control並不會修改另乙個訊息處理過程中的快取處理過程。

請求時的快取指令包括

```text

no-cache

no-store

max-age

max-stale

min-fresh

only-if-cached

```響應訊息中的指令包括

```text

public

private

no-cache

no- store

no-transform

must-revalidate

proxy-revalidate

max-age

```####指令含義:

```public:```

響應可被任何快取區快取。

```private:```

對於單個使用者的整個或部分響應訊息,不能被共享快取處理。

這允許伺服器僅僅描述當使用者的部分響應訊息,此響應訊息對於其他使用者的請求無效。   

```no-cache:```

請求或響應訊息不能快取。

```no-store:```

用於防止重要的資訊被無意的發布。

在請求訊息中傳送將使得請求和響應訊息都不使用快取。

```max-age:```

客戶端可以接收生存期不大於指定時間(以秒為單位)的響應。  

```min-fresh:```

客戶機可以接收響應時間小於當前時間加上指定時間的響應。   

```max-stale:```

客戶端可以接收超出超時期間的響應訊息。

如果指定max-stale訊息的值,那麼客戶端可以接收超出超時期指定值之內的響應訊息。

####```etag/if-none-match```

一對驗證檔案實體的標記 "entity tag:的響應/請求頭.

apache中,etag的值,預設是對檔案的索引節(inode),大小(size)和最後修改時間(mtime)進行hash後得到的

```last-modified/if-modified-since:```

一對驗證檔案的修改時間的響應/請求頭

expires、 cache-control、last-modified、etag是rfc2616(http/1.1)協議中和網頁快取相關的幾個字段。 前兩個用來控制快取的失效日期,瀏覽器可通過它來判定,需不需要發出http請求; 後兩個用來驗證網頁的有效性,伺服器端利用它來驗證這個檔案是否需要重新返回last-modified vs etag

既然有了last-modified,為什麼還要用etag欄位呢?因為如果在一秒鐘之內對乙個檔案進行兩次更改,last-modified就會不正確。因此,http/1.1利用entity tag頭提供了更加嚴格的驗證。

http請求快取頭詳解

快取的作用 1.減少延遲 頁面開啟的速度 2.降低伺服器負載 先取快取,無快取在請求伺服器,有效降低伺服器的負擔 3.保證穩定性 有個笑話是手機搶購時為了保證伺服器的穩定性,在前端寫個隨機數限制百分之二十的人傳送資料到後台,這也側面說明了快取對於穩定性的作用 下圖是自己畫的,有點醜,請原諒!待會講解...

MyBatis的快取配置 Cache

一 mybatis的cache配置 select inet aton 二 注意的幾個細節 1 如果readonly為false,此時要結果集物件是可序列化的。2 在sqlsession未關閉之前,如果對於同樣條件進行重複查詢,此時採用的是local session cache,而不是上面說的這些ca...

spring快取cache的使用

在spring配置檔案中新增schema和spring對快取註解的支援 xmlns xmlns aop xmlns xsi xmlns mvc xmlns context xmlns tx xmlns p xmlns cache xsi schemalocation spring beans 3.0...