一、max-age默認時長
HTTP協議中的緩存控制,主要用於告知客戶端如何處理響應的緩存。而max-age字段,則是其中一個最為關鍵的控制參數,用於指定資源緩存的有效時間。如果沒有設置max-age字段,則瀏覽器會採用默認的緩存策略。
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Date: Fri, 01 Jan 2021 00:00:00 GMT
Expires: Thu, 31 Dec 2021 23:59:59 GMT
Cache-Control: max-age=3600
在上面的代碼中,max-age的值設定為3600秒(1小時),這意味着客戶端對這個資源的緩存副本可以在3600秒內被認為是有效的。
二、cookie的max-age
max-age不僅在HTTP協議中扮演着重要的角色,在cookie機制中同樣也十分重要。max-age字段指定了cookie在瀏覽器中的存活時間,單位是秒。
Set-Cookie: username=abc; expires=Sun, 01-Jan-2023 00:00:00 GMT; path=/; domain=.example.com; HttpOnly; SameSite=Lax;Max-Age=3600
上方代碼中,max-age的值設定為3600秒(1小時)。這意味着,客戶端在接下來1小時之內都可以通過cookie進行登錄狀態的維持。如果max-age設置為0,則表示立刻刪除此cookie。
三、maxage默認值為多少
在HTTP協議中,默認情況下,max-age字段的默認值為-1,這意味着資源不應該被以任何形式緩存。
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Date: Fri, 01 Jan 2021 00:00:00 GMT
Expires: Thu, 31 Dec 1981 08:52:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
上面代碼中,通過Cache-Control和Pragma的設置,告訴瀏覽器不對這個資源做任何形式的緩存操作。
四、maxage=0
maxage=0是常見的HTTP響應頭選項之一,表示資源已被修改,需要重新獲取。此時,瀏覽器會忽略緩存,並向服務器重新請求資源。
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Date: Fri, 01 Jan 2021 00:00:00 GMT
Expires: Thu, 31 Dec 2021 23:59:59 GMT
Cache-Control: max-age=3600
ETag: "abcd"
上面的代碼中,max-age的值設為3600秒,ETag字段指定了資源內容的版本號。當客戶端再次請求該資源時,如果該資源的版本號仍然是”abcd”,則客戶端可以使用本地緩存。否則,客戶端需要向服務器重新請求資源。
五、max-age=-1
max-age字段的默認值為-1,可以通過以下語法在響應頭中顯式指定此值:
HTTP/1.1 200 OK
Cache-Control: public, max-age=-1
這意味着,資源可以存於瀏覽器緩存中,但是在使用時,必須與服務器進行重新驗證(使用If-None-Match或If-Modified-Since等頭字段),確認緩存版本是否仍然有效。
六、max-age與CDN
max-age在CDN中也有着十分重要的作用。CDN一般將緩存的資源存放於CDN服務節點上,再由用戶從最靠近其物理位置的節點進行訪問。
Cache-Control: public, max-age=604800
對於許多靜態資源,如圖片、css文件等,max-age的設定應該相對較長,這樣CDN在提供服務的時候可以直接將這些靜態資源從自己的本地緩存中獲取,而不用請求源站。
七、總結
本文深入講解了max-age的各種用法,從HTTP中的默認設定、cookie中的max-age設置,到各種場景下特定max-age值的取值範圍。合理地設置max-age參數,不僅可以減輕服務器壓力,也可以提高客戶端的訪問速度,使得網絡資源的使用變得更加高效。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/300975.html