2011-09-25 69 views
2

想知道這是可能的.htaccess?.htaccess緩存靜態內容(除非修改)?

我目前通過PHP緩存.js,.css和所有圖像文件(並且只在文件沒有通過檢查filemtime())被修改時才提供緩存。

然而有人認爲它可能通過.htaccess和更快,所以希望也許有人可以擺脫一些光...我環顧四周,發現各種片段,但沒有涵蓋我所追求的。

回答

5

如果你的mod_expires安裝在你的apache服務器上,你可以在你的.htaccess文件中加入類似的東西。這個例子是PHP定位的(實際上是從Drupal 7 .htaccess文件中抓取的),但應該是一個很好的起點。

FileETag MTime Size 
<IfModule mod_expires.c> 
    # Enable expirations. 
    ExpiresActive On 

    # Cache all files for 2 weeks after access (A). 
    ExpiresDefault A1209600 

    <FilesMatch \.php$> 
    # Do not allow PHP scripts to be cached unless they explicitly send cache 
    # headers themselves. Otherwise all scripts would have to overwrite the 
    # headers set by mod_expires if they want another caching behavior. 
    ExpiresActive Off 
    </FilesMatch> 
</IfModule> 
+0

謝謝,但是如果緩存內容被修改,會發生什麼情況,直到緩存被清除或自動更新,它仍然會檢索緩存的內容? – user962026

+0

道歉我沒有完全閱讀,我已經更新了上面的代碼以在頂部包含FileETag標識符,它告訴服務器如果內容沒有改變,不發送完整的響應。這裏有一個[更完整的解釋](http://stuntsnippets.com/etags-htaccess/),但是這個想法是,如果內容改變了,新的內容將被返回。 – Clive

+0

真棒如此與片段,它會緩存所有非.php文件(如靜態)2個星期,如果文件已被修改它會自動返回修改後的版本? – user962026