httpd配置ResponseHeader
今天遇到一个问题:我把项目编译后的静态文件发布到开发机上,开发机使用httpd启的静态文件服务,页面的访问是在特制的壳浏览器里面,我更新了代码后,发现页面被缓存了,找到壳的RD联调了一下,发现我的主页html的ResponseHeader里面没有Cache-Control字段,如何添加该字段呢,于是翻看了一些资料,把问题顺利解决后,把解决问题的过程分享给大家。
1.查找官网文档,找到设置HTTP request and response headers的模块,mod_headers;
2.根据官网解释,mod_headers模块主要提供了两个指令来管理request和response header;
(1)Header 指令
主要用于配置response header,支持替换、合并、删除response header中的字段,基本语法如下:
Header [condition] set|append|add|unset|echo header [value] [env=[!]variable]
(2)RequestHeader指令
主要用于配置request header,支持替换、合并、删除request header中的字段,基本语法如下:
RequestHeader [condition] set|append|add|unset header [value] [env=[!]variable]
(3)指令出现的地方与优先级
以上两个指令几乎可以在配置文件任意地方出现,可以在 <Directory>
, <Location>,
<Files>
部分, 可以在 .htaccess
文件中,也可以出现在虚拟主机配置中,但是有优先级的区别,官方给出的优先级:
The directives are processed in the following order:
- main server
- virtual host
<Directory>
sections and.htaccess
<Files>
<Location>
3.了解了基本配置规则,接下来就是动手操作了。
(1)在httpd.conf文件确保mod_headers模块被加载
LoadModule headers_module MODULES_PATH/mod_headers.so
(2)使用Header指令,进行set操作
<IfModule headers_module> Header set Cache-Control no-cache </IfModule>
经过以上三个步骤,重启了httpd,完美解决问题。