当前位置: 首页 > news >正文

学校网站栏目建设百度app安装

学校网站栏目建设,百度app安装,软件ui设计网站,wordpress主题大前端dux去授权问题案例:缓存叠加导致的缓存策略不一致背景在多层 Nginx 配置下,Cache-Control 头部的配置可能出现 叠加 问题,导致缓存策略不一致。假设我们有两层 Nginx 配置,其中 nginx A 配置了 Cache-Control: no-cache,而 ngin…

问题案例:缓存叠加导致的缓存策略不一致

背景

在多层 Nginx 配置下,Cache-Control 头部的配置可能出现 叠加 问题,导致缓存策略不一致。假设我们有两层 Nginx 配置,其中 nginx A 配置了 Cache-Control: no-cache,而 nginx B 配置了 Cache-Control: public, max-age=86400。这种情况下,最终返回的 Cache-Control 头部会是两个头部的叠加:

Cache-Control: no-cache, public, max-age=86400

这导致客户端无法根据预期缓存资源,影响性能和资源的更新策略。

排查结果

Nginx 中,add_header 指令是 累加式 的,意味着当多个 add_header 被设置时,它们会被合并到响应头部中。如果两层 Nginx 都设置了 Cache-Control,则返回的响应头会包含两个 Cache-Control 值。

通过以下步骤,我们进行了排查:

  1. 查看 nginx A 配置:

    • 配置了 Cache-Control: no-cache

  2. 查看 nginx B 配置:

    • 配置了 Cache-Control: public, max-age=86400

  3. 分析最终响应头:

    • 使用 curl -I 查看响应头,发现最终响应头包含了 no-cache, public, max-age=86400,即两个头部叠加。

结论

  • 多层代理配置 中,Cache-Control 头部会叠加,导致缓存策略混乱。

解决方案

为避免头部叠加,经测试,我们可以在 nginx B 中 location中配置add_header可以完成对http层Cache-Control的重置,并不会叠加,nginx A会返回期望的Cache-Control值

配置修改:
nginx A 配置:
server {listen 80;server_name example.com;location /your-path/ {proxy_pass http://nginxB;}
}
nginx B 配置:
server {listen 80;server_name example.com;location /your-path/ {# 设置 Cache-Control,确保正确的缓存策略add_header Cache-Control "public, max-age=86400";}
}

另外一种方案

nginx A 配置:

google到有提到可以通过proxy_ignore_headers参数让 Nginx A 忽略nginx B Cache-Control 头部,但我实际测下来效果还是二者叠加的结果,原因不详,暂做个记录

server {listen 80;server_name example.com;location /your-path/ {proxy_ignore_headers Cache-Control;add_header Cache-Control "public, max-age=86400";proxy_pass http://nginxB;}
}

效果

无缓存:100~200ms

开启缓存:6-30ms

扩展:前端资源缓存优化

1. 静态资源的长期缓存

对于不会频繁变化的静态资源(如图片、字体、第三方库),可以使用 长期缓存。通过配置较长的 max-age,浏览器可以缓存这些资源,并减少重复加载:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|eot)$ {add_header Cache-Control "public, max-age=31536000, immutable";
}
  • max-age=31536000:表示资源缓存 1 年。

  • immutable:表示资源不可更改,浏览器可以安全地长期缓存。

2. 动态资源的缓存

对于经常更新的动态资源(如 HTML 页面和 API 请求),可以使用 短期缓存不缓存,以确保客户端获取到最新内容:

location / {add_header Cache-Control "private, max-age=300";
}
  • max-age=300:表示缓存 5 分钟,之后会重新请求服务器。

3. 版本化资源文件

为避免缓存问题,通常会给静态资源文件添加版本号或哈希值,确保每次资源更新时,文件名变化,浏览器能够加载最新版本:

main.abc123.js  --> main.js
4. 缓存失效与清理
  • Etag:基于文件内容生成唯一标识,当文件内容变化时,Etag 也会变化,浏览器会自动请求新资源。

  • Last-Modified:表示文件的最后修改时间,结合 If-Modified-Since 使用。

location / {add_header Cache-Control "public, max-age=0, must-revalidate";add_header Last-Modified $date_gmt;add_header ETag $request_time;
}
5. 高级缓存优化技巧
  • CDN 加速:通过 CDN 缓存静态资源,减少原服务器负载,提高响应速度。

  • 缓存穿透与缓存雪崩:使用 Vary 头部和随机过期时间避免这些问题。

add_header Vary Accept-Encoding;
  • stale-while-revalidate:缓存过期后,先返回过期内容,后台异步刷新缓存,避免用户等待。

add_header Cache-Control "stale-while-revalidate=60, max-age=86400";

总结

多层 Nginx 配置 ,缓存头部会有叠加问题

同时,要积极利用前端资源缓存 + gzip,能显著提升网页加载速度、减少服务器压力

http://www.skylitedrivein.com/news/497.html

相关文章:

  • 深圳商城网站建设公司aso优化吧
  • 手机app网站竞价排名的弊端
  • 乌鲁木齐全网建站360推广官网
  • 做域名代理网站企业网站建设目标
  • h5 和手机网站最近七天的新闻重点
  • 番禺手机网站建设企业网页设计与推广
  • 用nodejs可以做网站么超云seo优化
  • 宁波建设网 提取业务长春seo公司
  • 网站制作公司怎么运营今日头条新闻消息
  • 诱导视频网站怎么做南宁网站seo优化公司
  • 静态网站 搜索功能郑州网站推广优化
  • 网站建设pdf下载免费网站推广群发软件
  • 购物网站的页面设计网页制作与设计
  • 国内做任务得数字货币的网站上海百度seo牛巨微
  • 平面设计主要学什么哪些软件网站seo方案模板
  • 郑东新区网站建设网站推广方法大全
  • wordpress 高级自定义seo工作流程
  • 网站制作公司获取客户谷歌浏览器官方正版下载
  • 网站建设代码模板百度关键词优化快速排名软件
  • 韩国风格网站php源码友情链接建立遵循的原则包括
  • 做优惠券的网站有哪些软文推荐
  • 今天的新闻联播文字版东莞百度推广优化公司
  • 建设自己的网站首页互联网营销师考证多少钱
  • 广州海珠做网站的公司互联网营销师培训教材
  • 深圳龙岗建站公司微营销推广软件
  • 百斯特网站建设怎么做电商生意
  • 电子商务网站开发人员要求游戏推广怎么做引流
  • 在网站做商城平台需要哪些资质教育培训机构营销方案
  • php个人网站江苏网页设计
  • 西安网站制作顶广告营销