我无法让JS文件上的expire标头正常工作..它在CSS文件上工作正常!?
有谁能告诉我我做错了什么? :(
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
答案 0 :(得分: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"
应该工作
干杯 罗宾
答案 1 :(得分:7)
尝试将ExpiresDefault
包裹在<filesMatch
代码中,而不是使用ExpiresByType
:
<filesMatch "\.(js)$">
ExpiresDefault A29030400
</filesMatch>
答案 2 :(得分:1)
您可能需要从Apache主机配置中激活Expires模块。
在我的情况下,我添加了
ExpiresActive On
在第一个ExpiresByType
指令之前,它立即开始工作(在Apache重新加载之后)。
我不确定为什么需要明确启用它。在其他服务器上,一旦我使用a2enmod
(可能使用Apache 2.2,但我无法找到清晰的模式)启用mod,它就会工作
答案 3 :(得分:0)
老问题,但这是我所学到的:
在浏览器中按 F12 (我使用的是Chrome),然后转到&#34; 网络&#34;选项卡并查找未缓存的JavaScript。在那里查找标题信息(例如,通过&#34;标题&#34;标签)并查看&#34; 内容类型&#34 ;在响应标题信息中。
就我而言,它是&#34; application / javascript &#34;,我没有在npm run webpack
中具体定义。一旦我添加了该行:
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"webpack": "webpack"
},
"devDependencies": {
"webpack": "^4.1.1",
"webpack-cli": "^2.0.11"
}
}
然后javascript按预期缓存。