我尝试了各种方法,到目前为止 .htaccess 中有以下内容:
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresDefault "access plus 1 month"
# 1 month exp
ExpiresActive On
<filesMatch ".(gpdf|PDF|gif|ico|jpg|jpeg|png|GIF|ICO|JPG|JPEG|PNG|css|js|woff|CSS|JS|WOFF|ttf|TTF|txt|TXT|html|HTML)$">
Header unset Set-Cookie
Header set Cache-Control "max-age=2592000"
Header unset ETag
FileETag None
</filesMatch>
提供 JS 内容的 PHP 文件具有以下 header :
header('Content-type: application/javascript');
header("Cache-control: max-age=2592000, must-revalidate");
当我进行速度测试时,它仍然显示“为 js.php 指定一个缓存验证器”
我正在做的事情是否可能,或者我只是错过了什么?
编辑: 相关文件的响应 header :
HTTP/1.1 200 OK
Date: Sat, 24 Jun 2017 23:14:33 GMT
Server: Apache/2.4.23 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
X-Powered-By: PHP/5.6.26
Vary: Accept-Encoding
Content-Encoding: gzip
Cache-Control: max-age=2592000, must-revalidate, max-age=2592000
Expires: Mon, 24 Jul 2017 23:14:33 GMT
Connection: keep-alive, Keep-Alive
Content-Length: 7436
Keep-Alive: timeout=30, max=100
Content-Type: application/javascript
最佳答案
感谢@user82217,我已经设法找出并整理出一个答案。
我缺少的行是 php 文件本身中最后修改的 header 。
我有:
header('Content-type: application/javascript');
header("Cache-control: max-age=2592000, must-revalidate");
并且需要附加:
header("Last-Modified: " . gmdate('D, d M Y H:i:s T', filemtime(__FILE__)));
这将为文件提供其正在执行的脚本文件的最新修改 header (采用 GMT 的正确格式)。
这解决了我的问题!
关于javascript - 是否可以为提供 JS 内容的 PHP 文件指定缓存验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741351/