这应该很简单,但显然不是。
我正试图避免将服务工作者文件缓存在Apache服务器上。
文件为sw.js
,并按应放置在/public_html/
上。
我尝试了以下<FilesMatch ??? >
的几种组合,例如"sw\.js$"
,但没有成功。
<FilesMatch "^(sw\.js)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 08 Jan 1975 05:00:00 GMT"
</ifModule>
</FilesMatch>
根据to this,如果我运行
`curl -I -L https://www.soeezauto.com/sw.js | grep cache-control`
我应该收到cache-control: no-cache
,但我没有。
答案 0 :(得分:2)
您在FilesMatch
指令内的正则表达式似乎正确。但是请注意,Apache将发送以下标头作为响应:
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
在Cache-Control
处注意混合大小写标题的名称。
您的grep
命令正在搜索所有小写的标头名称,即cache-control
,因此没有显示输出。
您需要在-i
中使用grep
(忽略大小写)匹配,或搜索完全相同的标头,即Cache-Control
。
因此,以下任何grep
都可以使用:
grep -i 'cache-control'
或
grep 'Cache-Control'
为了获得更高的效率,请为固定字符串搜索添加-F
选项,因为您没有使用grep
模式中的任何正则表达式来实现它:
grep -iF 'cache-control'