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