[英]Apache: set max-age or expires in .htaccess for directory
我有一些內容永遠不會改變的目錄。
是否可以創建.htaccess文件,告訴瀏覽器該目錄和子目錄中的任何內容都可以緩存很長時間?
如果可能的話,我想在每個目錄中復制相同的.htaccess文件。
如果這是可能的,你會建議max-age超過期限或兩者兼而有之嗎?
所以看起來確實可行...... .htaccess文件語法是:
Header unset Last-Modified
FileETag none
ExpiresActive On
ExpiresDefault "access plus 1 years"
這將關閉Etags並啟用緩存控制:max-age
然后將此.htaccess文件放在目錄中,所有文件(包括它的子目錄將被緩存1年。
我決定將所有可緩存內容放在一個根目錄下,然后編輯httpd.conf
<Directory "C:\somedir\cache">
Header unset Last-Modified
FileETag none
ExpiresActive On
ExpiresDefault "access plus 1 years"
</Directory>
我還在測試這個。 我只是希望這不會關閉網站其他部分的Etags。 到目前為止看起來它按計划工作。
更新(6個月后):
設置ExpiresDefault並允許使用電子標簽是最好的選擇。
在httpd.conf中:
<Directory "C:\somedir\cache">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</Directory>
確保“somedir”位於apache根目錄內(例如htdocs)。
允許使用電子標簽是一件好事,因為1年后,瀏覽器將通過傳遞電子標簽重新驗證文件。 Web服務器將發回304 - Not Modified並將max-age重置為1年。 這非常有效。
總而言之,您可以查看apache日志文件,並查看/ cache目錄中的項目是否已開始提供一次。
注意:我發現如果你願意,可以設置Header append Cache-Control "public"
。
最終版本:
這是最終版本:(只需在httd.conf的底部添加)
<Directory "C:\somedir\cache">
ExpiresActive On
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public"
</Directory>
檢查標題應該揭示:
Accept-Ranges:bytes
Cache-Control:max-age=31536000, public
Connection:Keep-Alive
Content-Language:en
Content-Length:746
Content-Type:text/css
Date:Thu, 29 May 2014 15:23:50 GMT
ETag:"240000000add63-2ea-4f4086d72ad01"
Expires:Fri, 29 May 2015 15:23:50 GMT
Keep-Alive:timeout=40, max=200
Last-Modified:Fri, 07 Mar 2014 18:28:59 GMT
這將:
僅供參考,如果您執行上述操作並且您的Apache不會重新啟動,那么您可能會收到此錯誤:
The Apache service named reported the following error:
>>> Invalid command 'ExpiresActive', perhaps misspelled or defined by a module not included in the server configuration.
您可以通過單擊“開始”,鍵入“計算機管理”,在樹中打開“事件查看器 - > Windows日志 - >應用程序”,找到該錯誤。 這就是我發現上述錯誤的地方。
輕松修復,只需取消注釋httpd.conf中的這一行:
#LoadModule expires_module modules/mod_expires.so
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.