适用场景
站点速度影响两件事:跳出率与收录。优化顺序是「先测量、再压缩、后缓存」:不测量就优化,往往在改没用的地方。
配置步骤(缓存与图片治理)
# 1) 缓存策略(nginx 示例)
location ~* \.(css|js|svg|png|jpg|jpeg|webp|avif|woff2)$ {
expires 30d;
add_header Cache-Control 'public, immutable';
}
location = /index.php {
add_header Cache-Control 'no-cache';
}
# 2) 版本号:资源引用带 hash 或 v=时间戳
# <link rel="stylesheet" href="/assets/css/style.css?v=1790401849">
# 3) 图片治理
# - 按展示尺寸生成多档(列表 480/详情 1200)
# - 转 WebP,保留原图备份
# - 懒加载:loading="lazy",首屏图不懒加载
# - 体积目标:列表图 < 100KB,首屏主图 < 300KB
# 4) 检查图片体积分布
find /www/sites/tfor.cn/index/uploads -type f | head -5
ls -lS /www/sites/tfor.cn/index/uploads | head -10
关键参数与建议
- 测量:用浏览器性能面板与线上监测看首屏、LCP、总请求数、资源体积
- 资源压缩:CSS/JS 压缩合并(不要过度合并),开启 gzip/brotli
- 缓存策略:静态资源长缓存 + 版本号(?v=),HTML 不缓存或短缓存
- 图片:按展示尺寸裁切、WebP/AVIF、懒加载、首屏图优先加载
- 接口:首页并发接口数量控制、慢接口加缓存、避免 N+1 查询
- 服务器:PHP opcache 开启、数据库索引优化、页面级缓存
- 字体与第三方脚本:第三方统计与字体是常见拖慢项,按需加载
- 回归:每次上线后复测首屏,建立性能基线
容易踩的坑
- 缓存设了 1 年但资源没有版本号,改版后用户看到旧样式
- HTML 也长缓存,内容更新用户看不到
- 图片不压缩,列表页加载几十 MB
- 懒加载把首屏大图也懒加载,首屏反而更慢
- 上传大图直接放原图,没做缩略图
- 缓存头只在部分路径生效,实际未命中
验证与巡检
curl -sSI https://example.com/assets/css/style.css | grep -i -E 'cache-control|expires'
curl -sSI https://example.com/ | grep -i cache-control
ls -lS /www/sites/tfor.cn/index/uploads | head -5
# 目标:静态资源 max-age >= 30d;HTML 不缓存;最大图片 < 500KB
- 巡检:缓存头符合策略、无超大图片、首屏图不懒加载、上线后复测通过
小结
性能优化验收:首屏在目标网络下达到设定指标,静态资源命中缓存,图片体积下降且清晰度可接受,且每次上线有性能回归记录。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。