今天遇到一個問題:我把項目編譯后的靜態文件發布到開發機上,開發機使用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,完美解決問題。