一 简单案例
① nginx -V 的一些信息
② nginx代理服务器的配置
1)inactive 时间到了,磁盘的'缓存数据删除'
备注:inactive参数设置'cache不活跃缓存'的删除时间
大白话:inactive是针对'两次请求'间隔时间,到时间'就删掉'不占用内存
细节点:只要有请求,inactive就'刷新计时',在'下一次'请求到来时,如果超过'time'则删除
2)valid 过期了,但是'磁盘数据不会'删除
valid:是针对'第一次'请求之后,内存中的'cache key'缓存的时间;在这个有效期内,会'一直使用缓存'
重点: nginx是基于内存中是否存在'cache key',决定是否向后端服务'重新'读取
nginx配置proxy_cache_path之inactive和proxy_cache_valid对比
③ 上游服务器的配置
④ 发起请求
1)第一次请求
MISS:缓存'未命中',回源'到后端获取'最新的内容
2)第二次请求
HIT:缓存'命中',直接'返回nginx缓存'中内容,'不回源'到后端
3)第三次请求
EXPIRED:缓存'命中'但'过期'了,'回源到后端'获取最新的内容。
4)不请求后1m后查看缓存目录
⑤ 日志
1)代理服务器的日志
2)上游服务器的日志验证
二 特殊响应头对缓存的影响
++++++++++++ '上游'服务器三个参读'独立'测试 ++++++++++++
核心: 探讨'优先级'问题
1)add_header Vary * ; -->永远'不会缓存' --> 效果:MISS
2)add_header X-Accel-Expires 3; # 3s
备注:上游服务说,我发起的内容'什么时候过期'
3)add_header Cache-Control 'max-age=3,stale-while-revalidate=3';
重点: 由nginx缓存服务器和源服务器'共同'决定,缓存服务器要严格遵守源服务器'响应的Header'
影响: 响应在nginx中的'缓存'时间
① 代理服务器的配置
② 后端服务器的配置
说明: 通过不同的'location'来验证这些'特殊'的的上游'response header'对nginx代理缓存的影响
③ X-Accel-Expires
④ Vary *
⑤ Cache-Control 主流