Http code :304 代表什么?你知道多少?
圖片
1. http code 304 Not Modified
HTTP 狀態(tài)碼 304 Not Modified 是一個(gè)無(wú)內(nèi)容(no-content)的狀態(tài)碼,表示客戶端發(fā)送了一個(gè)條件性請(qǐng)求(conditional request),并且服務(wù)器發(fā)現(xiàn)自從上次請(qǐng)求以來(lái)資源并沒(méi)有改變,因此返回這個(gè)狀態(tài)碼而不是重復(fù)傳輸相同的數(shù)據(jù)。
當(dāng)客戶端(通常是瀏覽器)向服務(wù)器請(qǐng)求一個(gè)資源時(shí),如果之前已經(jīng)緩存過(guò)這個(gè)資源,那么它會(huì)在請(qǐng)求頭中包含一些信息,比如 If-Modified-Since 或 If-None-Match,以詢問(wèn)服務(wù)器這個(gè)資源是否已經(jīng)被修改。
- If-Modified-Since: 客戶端告訴服務(wù)器自從某個(gè)日期之后它就沒(méi)有獲取過(guò)這個(gè)資源了。
- If-None-Match: 客戶端告訴服務(wù)器它有一個(gè)資源的特定版本(通過(guò) ETag 標(biāo)識(shí)),并詢問(wèn)這個(gè)版本是否仍然有效。
如果服務(wù)器發(fā)現(xiàn)請(qǐng)求的資源自上次請(qǐng)求以來(lái)沒(méi)有變化,它就會(huì)發(fā)送一個(gè) 304 Not Modified 響應(yīng),并且不包含資源的實(shí)際內(nèi)容。這樣可以減少帶寬消耗,提高性能,因?yàn)榭蛻舳丝梢灾苯邮褂闷渚彺娴母北尽?/p>
1.1. 示例
1.1.1. 客戶端請(qǐng)求頭示例:
GET /example.html HTTP/1.1
Host: www.example.com
If-Modified-Since: Tue, 15 Nov 2022 12:45:26 GMT
1.1.2. 服務(wù)器響應(yīng)頭示例:
HTTP/1.1 304 Not Modified
Date: Tue, 28 Oct 2024 12:30:00 GMT
Last-Modified: Tue, 15 Nov 2022 12:45:26 GMT
Cache-Control: max-age=3600
在這個(gè)例子中,客戶端提供了 If-Modified-Since 頭部,表明它有一個(gè)自從指定日期以來(lái)沒(méi)有更新過(guò)的資源副本。服務(wù)器檢查了這個(gè)資源并確認(rèn)自那個(gè)日期后資源沒(méi)有被修改過(guò),因此返回了 304 Not Modified 響應(yīng)。
對(duì)于前端開發(fā)者來(lái)說(shuō),理解 304 Not Modifnce 響應(yīng)可以幫助優(yōu)化應(yīng)用性能,尤其是在網(wǎng)絡(luò)請(qǐng)求頻繁的情況下。合理利用 HTTP 緩存機(jī)制能夠顯著減少數(shù)據(jù)傳輸量,提升用戶體驗(yàn)。