nginx实现http的缓存协商缓存

http通过判断资源是否被修改来判断是否使用缓存。

涉及几个请求头参数:

ETag; // 默认是开启的。作用是开启协商缓存

if_modified_since:浏览器缓存记录的该文件的最后服务器修改时间

Cache-Control:配置缓存的细则

复制代码
location / {
            root "D:/work/sourcecode/nginx_html/";
            index  index.html;
            try_files $uri $uri/ /index.html;

            // 开启协商缓存
			etag on;			

            // exact:文件修改的时间和缓存存储的时间要完全符合,还有其他属性,如before等。
			if_modified_since exact ; 

            // 增加缓存控制。no-cache:每次请求前都对资源进行验证是否过期。must-revalidate:可缓存但必须再向源服务器进行确认
			add_header Cache-Control "no-cache,must-revalidate";
}

上面的方法会将全部的资源都会进行缓存,但是在新版本上线时又希望用户能及时看到最新的内容。这种情况下上面的缓存方法就不太适用了,用户体验也不好。

我们可以将静态页面比如html或者根目录进行协商缓存,根目录下面的js、css、图片这种进行强缓存。

复制代码
#子系统目录
location /sub1/ {

            root "D:/work/sourcecode/nginx_html/159/";
            index  index.html;
            try_files $uri $uri/ /sub1/index.html;			
			
            #协商缓存
			add_header Cache-Control "no-cache,must-revalidate";			
}


# 单独为 CSS、js 提供缓存策略(放在 server 块内,与主 location 并列)
location ~ ^/sub1/.+\.(css|js)$ {

            root "D:/work/sourcecode/nginx_html/159/";
            
            #强缓存,36000000秒后过期
            add_header Cache-Control "public,max-age=36000000";   
}
相关推荐
牛大兵2 小时前
机顶盒获取局域网已经使用IP,开放的端口号,扫描摄像头,NAS,共享主机等开机自启局域网全量扫描工具
数据库·网络协议·tcp/ip
Mr. zhihao3 小时前
从零手写一个 RPC 框架:用一条因果链推导出 Dubbo 的骨架
网络协议·rpc·dubbo
AI备忘录5 小时前
(十一)DHCP 配置命令五厂商对照:华为 华三 锐捷 迈普 思科
服务器·网络·网络协议·网络安全·华为
AI多Agent协作实战派5 小时前
AI多Agent协作系统实战(四十六):改了十次规则,AI员工还是老样子——会话缓存的坑
java·spring·缓存
游戏开发爱好者816 小时前
WebSocket 抓包怎么查看内容?从握手到消息帧完整解读
网络协议·计算机网络·网络安全·ios·adb·https·udp
尘世壹俗人18 小时前
如何生成SSL要用的自签证书
网络协议
矩子01X21 小时前
保姆级智能座舱测试入门:从 Android Automotive OS 到 SOA 服务的 7 层验证
android·自动化测试·网络协议·汽车测试
新手unity自用笔记21 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
2401_868534781 天前
在企业环境中快速安装配置 FreeBSD Unix 服务器操作系
linux·网络协议
XUEYUAN52121 天前
Cloudflare 防护机制深度剖析与跨境数据采集工程化实践
服务器·网络·网络协议·tcp/ip·http