我們正在嘗試設定 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>