.htaccess缓存静态内容(除非修改)?

.htaccess缓存静态内容(除非修改)?,.htaccess,browser-cache,.htaccess,Browser Cache,我想知道这在.htaccess中是否可能 我目前正在通过PHP缓存.js、.css和所有图像文件(并且仅当文件未通过检查filemtime()进行修改时才提供缓存文件) 然而,有人建议可以通过.htaccess实现,而且速度更快,所以我希望有人能提供一些信息……我四处查看,发现了各种片段,但没有一个片段涵盖了我所追求的内容。如果您已经安装在apache服务器上,您可以在.htaccess文件中添加类似的内容。这个例子是面向PHP的(实际上是从Drupal 7.htaccess文件中获取的),但应

我想知道这在.htaccess中是否可能

我目前正在通过PHP缓存.js、.css和所有图像文件(并且仅当文件未通过检查filemtime()进行修改时才提供缓存文件)

然而,有人建议可以通过.htaccess实现,而且速度更快,所以我希望有人能提供一些信息……我四处查看,发现了各种片段,但没有一个片段涵盖了我所追求的内容。

如果您已经安装在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>
fileTag MTime大小
#启用过期。
过期于
#访问后将所有文件缓存2周(A)。
到期默认A1209600
#不允许缓存PHP脚本,除非它们显式地发送缓存
#标题本身。否则,所有脚本都必须覆盖
#如果mod_设置的头需要另一个缓存行为,则它们将过期。
过期活动关闭

谢谢,但是如果修改了缓存内容,会发生什么情况呢?在清除缓存之前,它还是会检索缓存内容,还是会自动更新?抱歉,我没有完全阅读这一部分,我已经更新了上面的代码,将FileTag标识符包含在顶部,它告诉服务器,如果内容没有更改,就不要发送完整响应。有一种方法,但其思想是,如果内容已更改,将返回新内容。因此,使用该代码段,它将缓存所有非.php文件(如static)2周,如果文件已被修改,它将自动返回修改后的版本?是的:)任何发送
if Match
头的客户端(如果不是所有的现代浏览器都这么做的话)将能够利用缓存功能