HTTP緩存相關的概念 http請求頭信息 http響應頭信息

請求頭:瀏覽器向服務器發送請求的數據,資源。
響應頭:服務器向瀏覽器響應數據,告訴瀏覽器我是誰,我要你怎麼做。如,我是nginx,給你的資源是正確的200 還是錯誤的404,我要你緩存多久。


常見的請求頭:
Accept: text/html,image/*                                            瀏覽器可以接收的類型 
Accept-Charset: ISO-8859-1                                      瀏覽器可以接收的編碼類型
Accept-Encoding: gzip,compress                               瀏覽器可以接收壓縮編碼類型 
Accept-Language: en-us,zh-cn                                瀏覽器可以接收的語言和國家類型
Host: www.lks.cn:80                                               瀏覽器請求的主機和端口
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT   某個頁面緩存時間 
Referer: http://www.lks.cn/index.html                         請求來自於哪個頁面
User-Agent: Mozilla/4.0 compatible; MSIE 5.5; Windows NT 5.0   瀏覽器相關信息
Cookie:                                                                    瀏覽器暫存服務器發送的信息
Connection: close1.0/Keep-Alive1.1                          HTTP請求的版本的特點
Date: Tue, 11 Jul 2000 18:23:51GMT                       請求網站的時間
Allow:GET                                                                  請求的方法 GET 常見的還有POST
Keep-Alive:5                                                            連接的時間;5
Connection:keep-alive                                             是否是長連接
Cache-Control:max-age=300                                   緩存的最長時間 300s

常見的響應頭:
Location: http://www.lks.cn/index.html                          控制瀏覽器顯示哪個頁面 
Server:apache nginx                                                   服務器的類型 
Content-Encoding: gzip                                               服務器發送的壓縮編碼方式 
Content-Length: 80                                                     服務器發送顯示的字節碼長度 
Content-Language: zh-cn                                           服務器發送內容的語言和國家名 
Content-Type: image/jpeg; charset=UTF-8                 服務器發送內容的類型和編碼類型 
Last-Modified: Tue, 11 Jul 2000 18:23:51GMT           服務器最後一次修改的時間 
Refresh: 1;url=http://www.lks.cn                                  控制瀏覽器1秒鐘後轉發URL所指向的頁面 
Content-Disposition: attachment; filename=lks.jpg      服務器控制瀏覽器發下載方式打開文件 
Transfer-Encoding: chunked                                      服務器分塊傳遞數據到客戶端  
Set-Cookie:SS=Q0=5Lb_nQ; path=/search                服務器發送Cookie相關的信息 
Expires: -1                                                                  資源的過期時間,提供給瀏覽器緩存數據,-1永遠過期 
Cache-Control: no-cache                                           告訴瀏覽器,一定要回服務器校驗,不管有沒有緩存數據。 
Pragma: no-cache                                                      服務器控制瀏覽器不要緩存網頁   
Connection: close/Keep-AliveHTTP                           請求的版本的特點   
Date: Tue, 11 Jul 2000 18:23:51 GMT                       響應網站的時間 
ETag:“ihfdgkdgnp98hdfg”                                       資源實體的標識(唯一標識,類似md5值,文件有修改md5就不一樣)


關於緩存相關頭的解釋:
 Expires 
            一個GMT時間,試圖告知瀏覽器,在此日期內,可以信任並使用對應緩存中的副本,缺點是,一但客戶端日期不準確.則可能導致失效.
 Pragma : no-cache   
        這個是http1.0中的常規頭,作用同http1.1的 Cache-Control : no-cache
 Last-Modified 
         一個GMT時間,告知被請求實體的最後修改時間.用於瀏覽器校驗其緩存副本是否仍然可以信任.與其相關的兩個條件請求標頭:
      1)If-Modified-Since 
         僅在get方法中意義,這個也是比較常見的。 如果實體在指定時間後,沒有修改則返回一個304,否則返回一個常規的Get請求的響應(比如200),靜態文件沒有修改返回304是好的,因爲它只是回服務器校驗一下是否有修改,而並沒有像200那樣重新請求數據。
      2)If-Unmodified-Since: 
         如果實體沒有任何修改,那麼就可以直接執行該請求, 而如果有修改,則返回一個412 Precondition Failed狀態碼,並且拋棄該方法對應的行爲操作(GET方法除外). 
 Cache-Control (http1.1的常見頭)
      1)public   
         僅體現在響應頭,通知瀏覽器可以無條件的緩存該響應。
      2)private  
         僅體現在響應頭,通知瀏覽器只針對單個用戶緩存響應. 且可以具體指定某個字段.如private –“username”
      3)no-cache
          a) 請求頭中:告訴瀏覽器回去服務器取數據,並驗證你的緩存(如果有的話)。
          b) 響應頭中:告訴瀏覽器,一定要回服務器校驗,不管有沒有緩存數據。 如果確定沒有被改,可以使用緩存中               的數據
      4)no-store 
          告訴瀏覽器任何情況下都不要被緩存。
      5)max-age
          a) 請求頭中:強制響應瀏覽器,根據該值,校驗緩存.即與自身的Age值,與請求時間做比較.如果超出max-    age值,則強制去服務器端驗證.以確保返回一個新鮮的響應.其功能本質上與傳統的Expires類似,但區別在於Ex    pires是根據某個特定日期值做比較.一但緩存者自身的時間不準確.則結果可能就是錯誤的.而max-age,顯然無    此問題. Max-age的優先級也是高於Expires的.
          b) 響應頭中:同上
         

發佈了27 篇原創文章 · 獲贊 3 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章