打开一个网页要等 8 秒,网站超过一半的优化人直接关掉走人。这不是网站吓唬人,是优化 Google 和 Akamai 测过无数次的结论。我见过一个卖手工皮具的网站独立站,产品图拍得极好,优化文案也扎实,网站但首页加载 6.7 秒——跳出率 79%。优化后来只做了三件事:图片转 WebP、网站砍掉两个没用的优化 JS 插件、把服务器从共享主机换成 VPS,网站加载降到 1.9 秒,优化转化率翻了近一倍。网站网站优化这事,优化很多时候不是网站"锦上添花",是"止血"。
别一上来就瞎改。用 PageSpeed Insights 跑一遍,再打开 Chrome DevTools 的 Network 面板,刷新页面,看瀑布图。哪条请求最粗、最长,那就是元凶。我自己的博客曾经卡在一个 2.3MB 的 hero 背景图上,还是 PNG 格式,纯属自己给自己挖坑。
常见瓶颈就几个:图片没压缩、JS 阻塞渲染、CSS 文件太多太碎、服务器响应慢(TTFB 超过 600ms 就该警惕)、没用 CDN。找到前三个,基本能解决 70% 的问题。
大多数网站 60% 以上的流量都耗在图片上。做法很直接:
loading="lazy",首屏之外的图延迟加载srcset 给不同屏幕配不同分辨率我帮一个摄影师朋友改站,光把作品集图片从 JPEG 转 WebP 加懒加载,首屏时间从 4.2 秒掉到 1.6 秒。他之前还打算花钱升级服务器,完全没必要。
很多站点装了一堆插件、统计脚本、客服 widget,每个都拖慢渲染。原则:能不用的删掉,能合并的合并,能异步的加 async 或 defer。CSS 用工具(比如 PurgeCSS)把没用的选择器剔掉,一个 WordPress 站动辄加载几千行用不上的样式,纯浪费。
关键 CSS 可以内联到 <head> 里,让首屏立刻有样式,剩下的异步加载。这招对首屏渲染速度提升很明显。
TTFB 高,多半是后端或主机的问题。开页面缓存、对象缓存(Redis 或 Memcached),数据库查询能省则省。静态资源全丢 CDN,用户从最近的节点拿文件,延迟直接砍半。Cloudflare 免费版对中小站够用了。
还有个容易忽略的点:HTTP/2 或 HTTP/3。老服务器还在跑 HTTP/1.1 的话,并发请求效率差一大截。升级一下,成本不高,收益立竿见影。
实际加载时间是一回事,用户"觉得"快不快是另一回事。骨架屏、进度条、按钮点击后的即时反馈,这些能让等待感大幅降低。我把一个表单提交按钮加了 loading 转圈,用户投诉"卡住"的反馈直接归零——其实后台处理时间没变。
优化不是一次性的活。上线后定期跑 Lighthouse,盯着核心指标(LCP、INP、CLS),有退化就查原因。网站跟车一样,得保养。