概述目标:通过合理的缓存头与Nginx压缩策略减少回源与带宽,提升终端加载性能与可用性。适用:静态资源与API响应的可缓存场景。核心与实战启用Brotli与Gzip(编译或动态模块):load_module modules/ngx_http_brotli_filter_module.so; load_module modules/ngx_http_brotli_static_module.so; brotli on; brotli_comp_level 5; brotli_types text/plain text/css application/javascript application/json image/svg+xml; gzip on; gzip_comp_level 5; gzip_types text/plain text/css application/javascript application/json image/svg+xml; 静态资源缓存策略:location /static/ { root /var/www; add_header Cache-Control "public, max-age=31536000, immutable"; try_files $uri $uri.br $uri.gz =404; } API缓存与变更验证:location /api/ { proxy_pass http://api; proxy_cache api_cache; proxy_cache_valid 200 1m; proxy_cache_bypass $http_cache_control; add_header Vary "Accept-Encoding"; add_header Cache-Control "public, max-age=60"; if_modified_since exact; etag on; } proxy_cache_path /var/cache/nginx/api levels=1:2 keys_zone=api_cache:100m inactive=10m use_temp_path=off; 示例验证压缩与缓存:curl -I https://example.com/static/app.js curl -H 'Accept-Encoding: br' -I https://example.com/static/app.js curl -I https://example.com/api/items 命中检查:add_header X-Cache $upstream_cache_status; 验证与监控头部与响应体:检查`Content-Encoding: br/gzip`与`Cache-Control`;正确变更验证通过`ETag/If-None-Match`。命中率:观察`$upstream_cache_status`与带宽变化;优化缓存键与变体。兼容性:对不支持Brotli的客户端回退到Gzip或未压缩版本。常见误区为动态API设置过长`max-age`导致数据过期;需短期或使用ETag/Last-Modified。未设置`Vary`导致缓存污染;需根据编码或其他头变体设置Vary。未提供`.br/.gz`静态文件导致回退失败;需构建时生成并部署。结语通过Nginx缓存与Brotli压缩策略,可显著提升响应性能与节省带宽,同时需要正确的变更验证与兼容策略保障数据正确性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部