簡體   English   中英

Apache:在.htaccess中為目錄設置max-age或expires

[英]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

這將:

  1. 將max-age設置為1年(推薦最長)
  2. 發送1年的過期標簽
  3. 發送Etag,1年后瀏覽器將執行etag驗證
  4. 讓中間緩存設備/服務知道他們可以將文件緩存1年。

僅供參考,如果您執行上述操作並且您的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.

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