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