如何在Apache环境中配置304协商缓存的缓存时间?
美国、香港服务器
如何在Apache环境中配置304协商缓存的缓存时间?
04-03 来源:
在 Apache 里设置 304 协商缓存 + 自定义缓存时间,核心就是改 max-age= 这个数值,我给你最清晰、直接能用的配置,你复制到宝塔伪静态里就行。
一、直接可用的配置(带自定义时间)
进入宝塔:网站 → 你的站点 → 设置 → 伪静态粘贴下面这段:
apache
# 开启 ETag(必须,用于304校验)
FileETag MTime Size
# --------------------------
# 静态资源:缓存时间自己改
# --------------------------
# 缓存时间在这里改:
# max-age=秒数
# 1小时 = 3600
# 1天 = 86400
# 7天 = 604800
# 30天 = 2592000
Header set Cache-Control "public, max-age=2592000, no-cache"
# --------------------------
# HTML/PHP 动态页面:不做强缓存,只走304
# --------------------------
Header set Cache-Control "public, no-cache, must-revalidate"
Header set Expires "Thu, 01 Jan 1970 00:00:00 GMT"
保存 → 重启 Apache 即可生效。
二、常用缓存时间对照表(直接替换数字)
你只需要改 max-age= 后面的数字:
10 分钟 → max-age=600
30 分钟 → max-age=1800
1 小时 → max-age=3600
2 小时 → max-age=7200
1 天 → max-age=86400
7 天 → max-age=604800
30 天 → max-age=2592000
三、关键解释(避免你踩坑)
max-age=xxx这是浏览器本地缓存时间,时间内直接读本地,不发请求。
no-cache时间到了之后,强制发请求做 304 校验,不是不缓存。这就是你要的 304 协商缓存。
FileETag MTime Size自动生成 ETag,Apache 靠它判断文件是否变化,从而返回 304。
四、如何验证是否生效
浏览器 F12 → Network
第一次访问:200 OK
第二次刷新:304 Not Modified
响应头里看到:
Cache-Control: max-age=xxxx, no-cache
ETag: "xxxx..."
Last-Modified: ...
就说明 304 协商缓存 + 自定义时间 完全正常了。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快