1、緩存的拓撲結構 緩存
私有緩存(private cache)是我的的緩存,包含了單個用戶最經常使用的頁面 服務器
公有緩存(public cache)又稱爲共享的緩存,包含了某個用戶團體的經常使用頁面 網絡
圖是網上下載的 併發
2、緩存的處理步驟 ui
對一條HTTP GET報文的基本緩存處理過程包含7個步驟 spa
(1)、接收 .net
(2)、解析 日誌
(3)、查詢-緩存查看是否有本地副本可用 文檔
(4)、新鮮度檢測 get
(5)、建立響應
(6)、發送-緩存經過網絡將響應發回給客戶端
(7)、日誌
3、保持緩存副本的新鮮度
本打算找個時間畫個流程圖,在oschina上看見@夕水溪下也寫了篇緩存的博客,正好他畫了這張圖,直接用之,謝@夕水溪下
一、文檔過時
經過特殊的HTTP Cache-Control首部和Expires首部,HTTP讓原始服務器向每一個文檔附加一個「過時時間」
下面2張圖,一張是Expires首部,一張是Cache-control:max-age首部
Expires首部和Cache-control:max-age首部所作的事情本質上是同樣的,但因爲Cache-control首部使用的是至關時間而不是絕對時間,因此更傾向於使用Cache-control首部
max-age值定義了文檔最大使用期-從第一次生成文檔到文檔再也不新鮮、沒法使用爲止,最大的合法生存時間(秒)
Expires指定一個絕對的日期
二、用條件方法進行再驗證
HTTP定義了5個首部
(1)If-Modified-Since:<date>若是從指定日期以後文檔被修改過,就執行請求方法。能夠與Last-Modified服務器響應首部配合使用。
(2)If-None-Match:<tags>服務器能夠爲文檔提供特殊的標籤,而不是將其與最近修改日期匹配,這些標籤就像序列號同樣。
(3)If-Unmodified-Since在進行部分文件傳輸時,獲取文件的其他部分以前要確保文件未發生變化,此時,這個首部才很是有用
(4)If-Range支持不完整文檔的緩存
(5)If-Match用於Web服務器打交道時的併發控制
其中(1)(2)對緩存在驗證來講是最有用的2個首部,If-modified-Since再驗證請求一般稱爲IMS請求
a.若是自指定日期後,文檔被修改了,If-Modified-Since條件爲真,一般Get會成功執行,攜帶新首部的新文檔會被返回給緩存,天然還包括一個新的過時時間
b.若是自指定日期後,文檔沒有被修改過,條件就爲假,會向客戶端返回一個304Not Modified響應報文,爲了提升有效性,不會返回文檔主體。
下圖給出的是一個304響應
未完待續。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。