6

我无法让 JS 文件上的过期标头正常工作。它适用于例如 CSS 文件!?

谁能告诉我我做错了什么?:(

htaccess

ExpiresActive on
ExpiresDefault A0
ExpiresByType image/gif A29030400
ExpiresByType image/jpeg A29030400
ExpiresByType image/png A29030400
ExpiresByType text/css A29030400
ExpiresByType text/javascript A29030400
ExpiresByType application/x-javascript A29030400

CSS文件的标题

Cache-Control   max-age=29030400
Connection  Keep-Alive
Date    Sun, 14 Oct 2012 12:06:45 GMT
Etag    "be-4cbcf2ad48b40"
Expires Sun, 15 Sep 2013 12:06:45 GMT
Keep-Alive  timeout=5, max=97
Server  Apache/2.4.2 (Win64) PHP/5.4.3

JS文件头

Cache-Control   max-age=0
Connection  Keep-Alive
Date    Sun, 14 Oct 2012 12:06:45 GMT
Etag    "1ad-4cc00d069f493"
Expires Sun, 14 Oct 2012 12:06:45 GMT
Keep-Alive  timeout=5, max=99
Server  Apache/2.4.2 (Win64) PHP/5.4.3
4

4 回答 4

9

(还不能发表评论......)我运行以下设置并且它有效。

ExpiresByType text/js "access plus 1 years"
ExpiresByType text/javascript "access plus 1 years"
ExpiresByType application/javascript "access plus 1 years"
ExpiresByType application/x-javascript "access plus 1 years" 

应该管用

干杯罗宾

于 2012-10-17T01:48:11.307 回答
7

尝试将 an 包装ExpiresDefault<filesMatch标签中,而不是使用ExpiresByType

<filesMatch "\.(js)$"> 
    ExpiresDefault A29030400 
</filesMatch>
于 2012-10-17T13:55:18.940 回答
1

您可能需要从 Apache 主机配置中激活 Expires 模块。

就我而言,我添加了

  ExpiresActive On

就在第一个ExpiresByType指令之前,它立即开始工作(在 Apache 重新加载之后)。

我不确定为什么需要明确启用它。在其他服务器上,一旦我启用了 mod,它就可以工作a2enmod(也许使用 Apache 2.2,但我找不到明确的模式)

于 2016-02-05T16:27:00.797 回答
0

老问题,但这是我学到的:

在浏览器中按F12(我使用的是 Chrome)并转到“网络”选项卡并查找未缓存的 javascript。在此处查找标头信息(例如,通过“标头”选项卡)并查看响应标头信息中的“内容类型”。

就我而言,它是“ application/javascript ”,我没有在我的.htaccess. 一旦我添加了那行:

ExpiresByType application/javascript "access plus 2419200 seconds"

然后javascript按预期被缓存。

于 2018-03-11T16:21:20.817 回答