1. 程式人生 > >HTTP圖解讀書筆記(第六章 HTTP首部)通用首部欄位

HTTP圖解讀書筆記(第六章 HTTP首部)通用首部欄位

HTTP/1.1通用首部欄位

Cache-Chtrol操作快取的工作機制

  • 快取請求指令

       

 

  • 快取響應指令  

       

public:其他使用者也可利用快取

private:響應只給特定的使用者

on-cache:防止從快取中獲取過期資源

客戶端傳送請求如果有no-cache,則表示客戶端不會接受快取過的資源,快取伺服器必須把客戶端請求傳送給源伺服器

如果伺服器端響應有no-cache,則表示快取伺服器不能對資源進行快取,源伺服器也不再對中間快取伺服器請求中提出的資源有效性進行驗證,且禁止其他響應資源進行快取。

no-store:控制可執行快取的物件

當使用no-store時,暗示請求或響應中有機密資訊。

注意:no-cache指的是不快取過期資源,no-store才是真正的不快取

s-maxage:指定快取期限

s-maxage同max-age,不同點是s-maxage針對諸多使用者使用的公共快取伺服器(代理)

當使用s-maxage時,可以自動忽略Expires和max-age

若max-age為0,則每次都會向源伺服器進行請求

若有max-age則會忽略Expires首部欄位

min-fresh:

min-fresh 指令要求快取伺服器返回至少還未過指定時間的快取資源。比如,當指定 min-fresh 為 60 秒後,過了 60 秒的資源都無法作為響應返回了。

max-stale:指示快取資源,即使過期也照常接收

如果指令未指定引數值,那麼無論經過多久,客戶端都會接收響應;如果指令中指定了具體數值,那麼即使過期,只要仍處於 max-stale指定的時間內,仍舊會被客戶端接收。

only-if-cache:

使用 only-if-cached 指令表示客戶端僅在快取伺服器本地快取目標資源的情況下才會要求其返回。換言之,該指令要求快取伺服器不重新載入響應,也不會再次確認資源有效性。若發生請求快取伺服器的本地快取無響應,則返回狀態碼 504 Gateway Timeout

must-revalidate:

使用 must-revalidate 指令,代理會向源伺服器再次驗證即將返回的響應快取目前是否仍然有效

若代理無法連通源伺服器再次獲取有效資源的話,快取必須給客戶端一條 504(Gateway Timeout)狀態碼。 

另外,使用 must-revalidate 指令會忽略請求的 max-stale 指令(即使已經在首部使用了 max-stale,也不會再有效果) 

no-transform:

使用 no-transform 指令規定無論是在請求還是響應中,快取都不能改變實體主體的媒體型別。這樣做可防止快取或代理壓縮圖片等類似操作

proxy-revalidate:

proxy-revalidate 指令要求所有的快取伺服器在接收到客戶端帶有該指令的請求返回響應之前,必須再次驗證快取的有效性。

Connection

 

  • 控制不在轉發給代理的首部欄位
  • 管理持久連線

       HTTP/1.1 版本的預設連線都是持久連線。為此,客戶端會在持久連線上連續傳送請求。當伺服器端想明確斷開連線時,則指定Connection 首部欄位的值為 Close

       HTTP/1.1 之前的 HTTP 版本的預設連線都是非持久連線。為此,如果想在舊版本的 HTTP 協議上維持持續連線,則需要指定Connection 首部欄位的值為 Keep-Alive。

Date

表明建立HTTP報文的日期和時間

Trailer

會事先說明在報文主體後記錄了哪些首部欄位。該首部欄位可應用在 HTTP/1.1 版本分塊傳輸編碼時。

Transform-Encoding

規定了傳輸報文主體時用的編碼方式

Upgrade

用於檢測HTTP協議或者其他協議是否可以使用更高版本進行通訊,由於upgrade僅限於客戶端和鄰近伺服器,所以upgrade要搭配connection:upgrade使用

Via

追蹤請求和響應本文的傳輸路徑

報文在經過閘道器和伺服器時,會在報文首部增加via附帶伺服器資訊

Warning

告知使用者與快取相關的警告

HTTP/1.1警告碼