Headers 與 Cache 機制探討 (一)
2016-06-24
Http Headers
經常串接 API 或是抓封包來看的朋友應該對 Http Header 不陌生吧,
Http Header 是我們每次在向目標 Server 取得內容時,依附在內容上的一些屬性或參數,
不管是使用哪一種 method,GET.POST.DELETE 還是 PUT... 都可以使用 Header 來傳遞一些資料,
Header 又分為三種 Request(請求)、Response(回應)、General(通用),下面讓我們先來看看一些常見到的 Header (與 cache 機制有關的使用紅色標記)
General (通用)
名稱 |
範例 |
簡介 |
Cache-Control |
no-cache,max-age=30 |
表示使用何種 Cache 機制,經常使用的 value 有:no-store , no-cache , public , private , max-age , |
Date |
Wed, 20 Apr 2016 08:46:31 GMT |
時間戳記 |
Pragma |
no-store |
表示使用何種 Cache 機制(已準備棄用,在Http 1.1後都改為參考 Cache-Control 了) |
Response (回應)
名稱 |
範例 |
簡介 |
Content-Length |
145698 |
表示回應的內容長度 |
Content-Type |
application/json |
表示回應的格式,常見的有text/html(網頁)、text/plain(無格式純文字)、application/json(JSON格式)、application/xml(XML格式)、text/xml(XML格式) |
Content-Language |
en |
表示回應的語言 |
Content-Encoding |
gzip |
表示回應的內容壓縮方式 |
Server |
Microsoft-IIS/8.5 |
表示何種技術的 web server |
ETag |
"12345678" |
Cache 機制中的*內容驗證權杖,需要用引號("")包住 |
Last-Modified |
Wed, 20 Apr 2016 08:46:31 GMT |
Cache 機制中的*時間驗證權杖,需使用 Universal Time |
X-Powered-By |
ASP.NET |
表示何種技術的 web service,特別說明一下,X 開頭系列的 Header 通常是非標準(各個語言自定義的),雖說是非標準,但有些 X 開頭的 Header 幾乎是很常見的 |
X-Version |
4.0.30319 |
web service 當前版本 |
Request (請求)
名稱 |
範例 |
簡介 |
Accept |
*/* |
指定請求內容的通用欄位 |
Accept-Charset |
UTF-8 |
指定請求內容編碼 |
Accept-Encoding |
gzip, deflate |
指定請求內容壓縮方式,以這個範例來說,我指定可以接受 gzip 或 deflate 壓縮格式 |
Accept-Language |
zh-TW,zh-CN;q=0.6,en-US;q=0.2 |
指定請求內容語言,q 代表請求權重(範圍值介於0~1之間,不寫預設=1),以這個範例來說,我指定可以接受 zh-TW(繁中)zh-CN(簡中)en-US(英文),其中又以 zh-TW 權重最高=1,zh-CN 其次=0.6,en-US 最低=0.2 |
Authorization |
a54bc12-17dd-367c5dcd |
這裡通常會放身份驗證 token |
If-None-Match |
"12345678" |
這裡會放上一次 Server 給的 ETag |
If-Modified-Since |
Wed, 20 Apr 2016 08:46:31 GMT |
這裡會放上一次 Server 給的 Last-Modified |
Request 與 Response 對應關係
Request (請求) |
Response (回應) |
Accept-Charset |
Content-Type |
Accept-Language |
Content-Language |
Accept-Encoding |
Content-Encoding |
If-None-Match |
ETag |
If-Modified-Since |
Last-Modified |
Http 的 Header 有定義非常非常的多,上面只是列出一些常見到的,對其他有興趣的可以參考
WIKI
其實關於 Header 要放什麼,最主要還是看 Server 與 Client 端在溝通時需要何種資訊來做搭配運用。
下一篇將介紹 Cache 機制
重點會放在 Cache-Control 、 ETag 、 Last-Modified 、 If-None-Match 、 If-Modified-Since ,這幾個 Header。