簡體   English   中英

三個.htaccess到期規則之間的差異

[英]Difference between three .htaccess expire rules

以下三個.htaccess規則之間的區別是什么以及何時使用每個規則,是否有任何特殊用例更喜歡其中一個?:

Header set Cache-Control "max-age=290304000"
Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
ExpiresDefault "access plus 10 years"

Headermod_headers的指令,允許修改HTTP頭字段。 在這種情況下, Header set有效地設置了所提到的頭字段Cache-ControlExpires ,因此將覆蓋已存在的頭字段。

第一個指令將頭字段Cache-Control設置為值max-age=290304000 ,它將新鮮度生命周期描述為相對於響應時間為290304000秒。

與此相反,第二個指令將標題字段Expires設置為值Thu, 15 Apr 2020 20:00:00 GMT ,其描述具有絕對時間值的新鮮度壽命。

Cache-Controlmax-age值和Expires expiration時間戳都可以轉換為另一個

4.2.1。 計算新鮮度壽命

緩存可以使用以下第一個匹配項計算響應的新鮮度生命周期(表示為fresh_lifetime):

  • ...

  • 如果存在max-age響應指令( 第5.2.2.8節 ),請使用其值或

  • 如果存在Expires響應頭字段( 第5.3節 ),請使用其值減去Date響應頭字段的值,或

  • ...

但如果兩者都存在,則Cache-Controlmax-age優先於Expires

如果響應包含帶有max-age指令的Cache-Control字段( 第5.2.2.8節 ),則收件人必須忽略Expires字段。 同樣,如果響應包含s-maxage指令( 第5.2.2.9節 ),則共享緩存接收方必須忽略Expires字段。 在這兩種情況下,Expires中的值僅適用於尚未實現Cache-Control字段的收件人。

而不是手動設置這些HTTP緩存控制頭字段, mod_expires ExpiresDefault指令允許輕松設置HTTP緩存。 新鮮度壽命可以用絕對值或相對值來描述,相對於響應時間(即access / now )或相對於所請求文件的修改時間(即modification )。 它使用Cache-ControlExpires

在這種情況下,第三個指令將默認新鮮度生命周期設置為自響應時起10年。

我會使用mod_expires進行HTTP緩存控制,而不是使用Header手動執行。 它更方便,允許相對和絕對新鮮度時間,並使用Cache-ControlExpires

第一個規則將最大年齡條目添加到Cache-Control。 瀏覽器必須在此處給出的時間后以秒為單位重新獲取文檔。

第二個和第三個規則創建過期標頭。 瀏覽器必須在此處給出的日期重新獲取文檔。 服務器必須做一些計算。

請注意,第二個規則強制同時刷新所有瀏覽器和所有資源,而第三個和最后一個規則根據請求時間使瀏覽器緩存無效。 如果您的網站擁有大量流量,您會看到差異:您可能會在2020年4月15日獲得一個戲劇性的高峰。:)

根據經驗: 使用max-age。 支持非常 ,您沒有機會創建無效日期。 此外,它更短。

進一步閱讀:

10個URL通過使用“01 jan 0001”的到期權威地聲明它們已過期(並且可能是木乃伊)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM