HTTP協議之緩存

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響應



未完待續。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

相關文章
相關標籤/搜索