【发布时间】:2026-01-24 08:35:02
【问题描述】:
想知道这在 .htaccess 中是否可行?
我目前正在通过 PHP 缓存 .js、.css 和所有图像文件(并且仅当文件没有通过检查 filemtime() 进行修改时才提供缓存)。
但是有人建议它可以通过 .htaccess 更快地实现,所以希望有人能提供一些启示……我环顾四周,发现了各种 sn-ps,但没有一个能涵盖我所追求的。
【问题讨论】:
想知道这在 .htaccess 中是否可行?
我目前正在通过 PHP 缓存 .js、.css 和所有图像文件(并且仅当文件没有通过检查 filemtime() 进行修改时才提供缓存)。
但是有人建议它可以通过 .htaccess 更快地实现,所以希望有人能提供一些启示……我环顾四周,发现了各种 sn-ps,但没有一个能涵盖我所追求的。
【问题讨论】:
如果你在你的 apache 服务器上安装了mod_expires,你可以在你的.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>
【讨论】:
If-Match 标头的客户端(大多数现代浏览器都会这样做)将能够利用缓存功能。快速阅读Wikipedia entry on ETags,它很好地全面描述了它们的使用