javascript - 是否可以为提供 JS 内容的 PHP 文件指定缓存验证器?

标签 javascript php .htaccess caching

我尝试了各种方法,到目前为止 .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/

相关文章:

javascript - Angular 获取所选项目的索引(来自 ng-options)

javascript - 当我重新加载页面时,我在文本框中输入的文本会保留在那里,我可以避免这种情况发生吗?

javascript - Bootstrap 下拉菜单不适用于标准 JS 和 CSS

.htaccess - 处理 HTTP 认证时,如何在 URL 上使用特殊字符(密码)?

laravel - 未为某些 Laravel 路由设置 .htaccess X-Frame-Options header

Javascript成员变量未定义

php - Symfony2 - 扩展实体,抽象实体

php mysql 信息检索

php - Eloquent 分组 orWhere

php - Joomla 3.4.4 多语言 url