原创文章转载请注明来源:https://blog.csdn.net/weixin_41756573/article/details/88814547
Nginx静态资源缓存
问题的产生:每个页面都会映入css、js等静态资源文件
解决的问题:避免每次请求,服务器都会处理静态资源(css,js,图片)所带来的压力
解决步骤:修改nginx.conf的相关配置
1.在http中做全局配置
#临时文件夹,用于存放暂时存放文件
proxy_time_path d:/nginx-time;
#设置缓存目录
proxy_cache_path d:/nginx-cache levels=1:2 keys_zone=babytun-cache:100m inactive=7d max_size=20g
缓存目录的参数解析
-levels 代表采用1:2,也就是以两级目录的形式保存缓存文件(缓存文件就是指静态资源css、js),同时文件名进行了MD5编码
-keys_zone 定义缓存的名称以及内存的使用,名称为babytun-cache,在内存中开辟100m(兆)交换空间
-inactive=7d 如果某个缓存文件超过7天没有被访问,则删除
-max_size=20g 代表文件夹最大不能超过20g,超过后会自动将访问频率最低的资源缓存文件删除
2.在server的location中做如下配置
#利用正则表达式匹配url,匹配成功的则执行内部逻辑
#~*不区分大小写 ~区分大小写
#woff 是一种字体
location ~* \.(gif|jpg|css|png|js|woff)(.*){
proxy_pass http:服务器池名称; #使用该服务器池(服务器池名称)进行后端处理
proxy_set_header Host $host; #请求头,代表原始的主机是多少
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache keys_zone的名称; #将缓存写入到proxy_cache_path定义的文件夹中
proxy_cache_valid 200 302 24h; #proxy_cache_valid的优先级大于inactive,如果静态资源的响应状态码为200、302(暂时性重定向)缓存文件有效期为一天
proxy_cache_valid 301 5d; #301永久性重定向
proxy_cache_valid any 5m; #any代表其他情况
#浏览器的缓存时间
expires 90d;
}
server中location的执行顺序 正则表达式的执行顺序大于 /