先來一張圖:
####下面簡單的來描述一下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...