2011-09-25 66 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