2
想知道这是可能的.htaccess?.htaccess缓存静态内容(除非修改)?
我目前通过PHP缓存.js,.css和所有图像文件(并且只在文件没有通过检查filemtime())被修改时才提供缓存。
然而有人认为它可能通过.htaccess和更快,所以希望也许有人可以摆脱一些光...我环顾四周,发现各种片段,但没有涵盖我所追求的。
想知道这是可能的.htaccess?.htaccess缓存静态内容(除非修改)?
我目前通过PHP缓存.js,.css和所有图像文件(并且只在文件没有通过检查filemtime())被修改时才提供缓存。
然而有人认为它可能通过.htaccess和更快,所以希望也许有人可以摆脱一些光...我环顾四周,发现各种片段,但没有涵盖我所追求的。
如果你的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>
谢谢,但是如果缓存内容被修改,会发生什么情况,直到缓存被清除或自动更新,它仍然会检索缓存的内容? – user962026
道歉我没有完全阅读,我已经更新了上面的代码以在顶部包含FileETag标识符,它告诉服务器如果内容没有改变,不发送完整的响应。这里有一个[更完整的解释](http://stuntsnippets.com/etags-htaccess/),但是这个想法是,如果内容改变了,新的内容将被返回。 – Clive
真棒如此与片段,它会缓存所有非.php文件(如静态)2个星期,如果文件已被修改它会自动返回修改后的版本? – user962026