根據apache中的內容類型設定快取控制標頭

根據apache中的內容類型設定快取控制標頭

我們正在嘗試設定 Cache-Control 標頭:max-age=300,對我們所有公共網站頁面公開。要使用 Filesmatch,我的應用程式頁面沒有任何副檔名。 ExpiresByType 可用,但它有其自身的缺點。

我正在尋找一種方法來將快取控制標頭設定為內容類型為 text/html 的所有應用程式頁面。有什麼辦法可以實現這一點嗎?

答案1

更安全的方法(因為開發人員在設定Content-Type檔案副檔名時可能會犯錯)是根據實際情況設定標頭Content-Type

<IfModule mod_headers.c>
  Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
</IfModule>

答案2

瀏覽器不需要看到 .html 副檔名就知道它是 text/html mime 類型文件。只要標頭向客戶端瀏覽器廣播該文件確實是 mime 類型 text/html,就可以了:

ExpiresByType text/html "access plus 300 seconds"

如果您詳細說明「有其自身的缺點」部分,我們也許也可以對此發表評論。

答案3

由於您不能使用 mod_expires,也許您可以使用 mod_headers 代替:http://httpd.apache.org/docs/2.2/mod/mod_headers.html

您可以將 filesMatch 與 header 結合使用

<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>

相關內容