HTTP 首部字段(三)

HTTP/1.1 通用首部字段

通用首部字段是指,請(qǐng)求報(bào)文和響應(yīng)報(bào)文雙方都會(huì)使用的首部馒疹。

1.Cache-Control

通過指定首部字段 Cache-Control 的指令,就能操作緩存的工作機(jī)制乙墙。

指令的參數(shù)是可選的颖变,多個(gè)參數(shù)之間通過 , 分隔生均。首部字段 Cache-Control 的指令可用于請(qǐng)求及響應(yīng)時(shí)。

 Cache-Control:private, max-age=0, no-cache

1.1. Cache-Control 指令一覽

緩存請(qǐng)求指令

指令 參數(shù) 說明
no-cache 強(qiáng)制向源服務(wù)器再次驗(yàn)證
no-store 不緩存請(qǐng)求或響應(yīng)的任何內(nèi)容
max-age=[秒] 必需 相應(yīng)的最大值
max-stale(= [秒]) 可省略 接收已過期的響應(yīng)
min-fresh=[秒] 必需 期望在指定時(shí)間內(nèi)的響應(yīng)仍有效
no-transform 代理不可更改媒體類型
only-if-cached 從緩存獲取資源
cache-extension - 新指令標(biāo)記(token)

緩存響應(yīng)指令

指令 參數(shù) 說明
public 可向任意方提供響應(yīng)的緩存
private 可省略 僅向特定用戶返回響應(yīng)
no-cache 可省略 緩存服務(wù)器不能對(duì)資源進(jìn)行緩存
no-store 不緩存請(qǐng)求或響應(yīng)的任何內(nèi)容
no-transform 代理不可更改媒體類型
must-revalidate 可緩存但必須再向源服務(wù)器進(jìn)行確認(rèn)
proxy-revalidate 要求中間緩存服務(wù)器對(duì)緩存的響應(yīng)有效性再進(jìn)行確認(rèn)
max-age=[秒] 必需 響應(yīng)的最大 Age 值
s-maxage=[秒] 必需 公共緩存服務(wù)器響應(yīng)的最大Age值
cache-extension - 新指令標(biāo)記(token)

這里僅挑選幾個(gè)重要的指令來解釋

no-cache

no-cache:為了防止從緩存中返回過期的資源悼做。
如果請(qǐng)求中包含 no-cache,表示客戶端不會(huì)接受緩存過的響應(yīng)哗魂「刈撸“中間”的緩存服務(wù)器必須把客戶端請(qǐng)求轉(zhuǎn)發(fā)給源服務(wù)器。
如果源服務(wù)器返回的響應(yīng)中包含 no-cache录别,那么緩存服務(wù)器也不能對(duì)資源進(jìn)行緩存朽色。

如果服務(wù)器返回的響應(yīng)中 no-cache 包含參數(shù)值,就表示當(dāng)客戶端接收到這個(gè)被指定的參數(shù)值的首部字段對(duì)應(yīng)的響應(yīng)報(bào)文后组题,就不能使用緩存葫男。另外就是 no-store 表示真正的不允許緩存。

Cache-Control:no-cache=Location

max-age

Cache-Control:max-age=604800(單位:秒)

當(dāng)客戶端發(fā)送的請(qǐng)求中包含 max-age 指令時(shí)崔列,如果判定緩存資源的緩存時(shí)間數(shù)值比指定時(shí)間的數(shù)值更小梢褐,那么客戶端就接收緩存的資源。另外赵讯,當(dāng)指定 max-age 值為 0 盈咳,那么緩存服務(wù)器通常需要將請(qǐng)求轉(zhuǎn)發(fā)給源服務(wù)器。

當(dāng)服務(wù)器返回的響應(yīng)中包含 max-age 時(shí)边翼,此時(shí)表示資源緩存的最長(zhǎng)時(shí)間鱼响,緩存服務(wù)器不再對(duì)資源的有效性進(jìn)行確認(rèn)。

在 HTTP/1.0 版本中组底,當(dāng) Expires 和 max-age (同時(shí)出現(xiàn)時(shí))丈积,會(huì)優(yōu)先處理 max-age 指令,忽略 Expires债鸡。

min-fresh

Cache-Control:min-fresh=60(單位:秒)

min-fresh 指令要求緩存服務(wù)器返回至少還未過指定時(shí)間的緩存資源江滨。當(dāng)指定 min-fresh=60 后,過了60秒的資源都無法作為響應(yīng)返回了厌均。

max-stale

Cache-Control:max-stale=3600(單位:秒)

該指令表示即使過期也照常接收牙寞。
如果未指定參數(shù)值,則表示無論過期多長(zhǎng)時(shí)間都會(huì)接收

only-if-cached

Cache-Control:only-if-cached

表示客戶端僅在緩存服務(wù)器本地緩存目標(biāo)資源的情況下才會(huì)要求其返回莫秆〖淙福———— 該指令要求緩存服務(wù)器不重新加載響應(yīng),也不會(huì)再次確認(rèn)資源有效性镊屎。若發(fā)生請(qǐng)求緩存服務(wù)器的本地緩存無響應(yīng)惹挟,則返回狀態(tài)碼 504 Gateway Timeout。

must-revalidate

Cache-Control:must-revalidate

使用 must-revalidate 指令缝驳,代理會(huì)向源服務(wù)器再次驗(yàn)證即將返回的響應(yīng)緩存目前是否仍然有效连锯。
若代理無法連通源服務(wù)器归苍,緩存必須給客戶端一條 504(Gateway Timeout)狀態(tài)碼。
注意:使用 must-revalidate 會(huì)忽略 max-stale 运怖。


proxy-revalidate

Cache-Control:proxy-revalidate

該指令要求所有的緩存服務(wù)器在接收到客戶端帶有該指令的請(qǐng)求返回響應(yīng)之前拼弃,必須再次驗(yàn)證緩存的有效性。

no-transform

  Cache-Control:no-transform

該指令規(guī)定無論在請(qǐng)求還是響應(yīng)中摇展,緩存都不能該表實(shí)體主體的媒體類型吻氧。
這樣可防止緩存或代理壓縮圖片等類似操作。

2.Connection



Connection的作用如下

  • 控制不再轉(zhuǎn)發(fā)給代理的首部字段
  • 管理持久連接

下面依次來對(duì)每個(gè)作用做說明

2.1 控制不再轉(zhuǎn)發(fā)給代理的首部字段

Connection:不再轉(zhuǎn)發(fā)的首部字段名

在客戶端發(fā)送請(qǐng)求和服務(wù)器返回響應(yīng)內(nèi)咏连,使用該首部字段盯孙,可控制不再轉(zhuǎn)發(fā)給代理的首部字段

2.2 管理持久連接

Connection:close

HTTP/1.1 版本默認(rèn)連接都是持久連接。為此祟滴,客戶端會(huì)在持久連接上持續(xù)發(fā)送請(qǐng)求振惰。當(dāng)服務(wù)器想明確斷開連接時(shí),則指定 Connection 首部字段的值為 Close垄懂。
HTTP/1.1 之前的 HTTP 版本默認(rèn)連接都是非持久連接骑晶。為此,如果想在舊版本的 HTTP 協(xié)議上維持持續(xù)連接草慧,則需要指定 Connection 首部字段值為 Keep-Alive透罢。
如下圖①所示,客戶端發(fā)送請(qǐng)求給服務(wù)器時(shí)冠蒋,服務(wù)端會(huì)像下圖②那樣加上首部字段 Keep-Alive 及首部字段 Connection 后返回響應(yīng)羽圃。

控制不轉(zhuǎn)發(fā)給代理的示意圖

3. Trailer

該字段會(huì)向服務(wù)器說明在報(bào)文主體后面記錄了哪些首部字段。該首部字段可應(yīng)用在 HTTP/1.1 版本分塊傳輸編碼時(shí)抖剿。

Trailer: Expires
···報(bào)文主體···
0
Expires:Tue朽寞,28 Sep 2004 23:59:59 GMT

上面指定值為 Expires,在報(bào)文主體之后(分塊長(zhǎng)度0之后)出現(xiàn)了首部字段 Expires斩郎。

4. Upgrade

該字段用于檢測(cè) HTTP 協(xié)議及其他協(xié)議是否可使用更高的版本進(jìn)行通信脑融,其參數(shù)值可以用來指定一個(gè)完全不同的通信協(xié)議。

Upgrade 字段示意圖

上圖中缩宜,Upgrade字段值指定為 TLS/1.0肘迎。此時(shí)其字段產(chǎn)生作用的對(duì)象僅限于客戶端和鄰接服務(wù)器之間。

5. Via

Via 是為了追蹤客戶端與服務(wù)器之間的請(qǐng)求和響應(yīng)報(bào)文的傳輸路徑锻煌。
報(bào)文經(jīng)過代理或網(wǎng)關(guān)時(shí)妓布,會(huì)先在首部字段 Via 中附加該服務(wù)器的信息,然后在進(jìn)行轉(zhuǎn)發(fā)宋梧。
另外匣沼,該字段還可避免請(qǐng)求回環(huán)的發(fā)生。所以必須在經(jīng)過代理時(shí)附加該首部字段內(nèi)容捂龄。

Via 字段作用示意圖

6. Warning

該字段通常會(huì)告知用戶一些與緩存相關(guān)的問題的警告释涛。
其格式如下加叁。最后的日期時(shí)間部分可省略。

Warning:[警告碼] [警告的主機(jī):端口號(hào)] "[警告內(nèi)容]" ([日期時(shí)間])

HTTP/1.1 警告碼

警告碼 警告內(nèi)容 說明
110 Response is stale(響應(yīng)已過期) 代理返回已過期的資源
110 Revalidation failed(再驗(yàn)證失敶角恕) 代理再驗(yàn)證資源有效性時(shí)失效(服務(wù)器無法到達(dá)等原因)
112 Disconnection operation(斷開連接操作) 代理與互聯(lián)網(wǎng)連接被故意切斷
113 Heuristic expiration(試探性過期) 響應(yīng)的使用期超過24小時(shí)(有效緩存的設(shè)定時(shí)間大于24小時(shí)的情況下)
199 Miscellaneous warning(雜項(xiàng)警告) 任意的警告內(nèi)容
214 Transformation applied(使用了轉(zhuǎn)換) 代理對(duì)內(nèi)容編碼或媒體類型等執(zhí)行了某些處理時(shí)
299 Miscellaneous persistent warning(持久雜項(xiàng)警告) 任意的警告內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末它匕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子窖认,更是在濱河造成了極大的恐慌豫柬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耀态,死亡現(xiàn)場(chǎng)離奇詭異轮傍,居然都是意外死亡暂雹,警方通過查閱死者的電腦和手機(jī)首装,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杭跪,“玉大人仙逻,你說我怎么就攤上這事〗颍” “怎么了系奉?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)姑廉。 經(jīng)常有香客問我缺亮,道長(zhǎng),這世上最難降的妖魔是什么桥言? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任萌踱,我火速辦了婚禮,結(jié)果婚禮上号阿,老公的妹妹穿的比我還像新娘并鸵。我一直安慰自己,他們只是感情好扔涧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布园担。 她就那樣靜靜地躺著,像睡著了一般枯夜。 火紅的嫁衣襯著肌膚如雪弯汰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天湖雹,我揣著相機(jī)與錄音蝙泼,去河邊找鬼。 笑死劝枣,一個(gè)胖子當(dāng)著我的面吹牛汤踏,可吹牛的內(nèi)容都是我干的织鲸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溪胶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搂擦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哗脖,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤瀑踢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后才避,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橱夭,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年桑逝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棘劣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡楞遏,死狀恐怖茬暇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寡喝,我是刑警寧澤糙俗,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站预鬓,受9級(jí)特大地震影響巧骚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜格二,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一劈彪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蟋定,春花似錦粉臊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抄淑,卻和暖如春屠凶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肆资。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工矗愧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郑原。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓唉韭,卻偏偏與公主長(zhǎng)得像夜涕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子属愤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文是《圖解HTTP》讀書筆記的第二篇女器,主要包括此書的第六章內(nèi)容,因?yàn)榈诹碌膬?nèi)容較多住诸,而且比較重要驾胆,所以單獨(dú)寫為...
    lijiankun24閱讀 1,366評(píng)論 0 6
  • 本篇文章篇幅比較長(zhǎng),先來個(gè)思維導(dǎo)圖預(yù)覽一下贱呐。 一丧诺、概述 1.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 55,029評(píng)論 24 557
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族,HTTP屬于它內(nèi)部的一個(gè)子集奄薇。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,444評(píng)論 0 20
  • 鏈接: https://pan.baidu.com/s/1bp08VvT 密碼: nnyd 章節(jié)一:了解Web及網(wǎng)...
    我是三人禾閱讀 1,469評(píng)論 0 4
  • 近日有消息稱電信運(yùn)營商經(jīng)過一年多的整改惕艳,尤其是在提速降費(fèi)方面已經(jīng)惠及用戶400億的產(chǎn)品優(yōu)惠搞隐,但是驹愚,為何人們還認(rèn)為上...
    耿彪閱讀 194評(píng)論 0 1