HTTP/2 开启后为什么首屏加载反而变慢了?
我最近把网站升级到 HTTP/2 了,理论上多路复用应该更快才对,但上线后发现首屏加载时间比之前还长了几百毫秒,特别在弱网下更明显。
服务器是 Nginx,配置里已经加了 listen 443 http2;,也确认浏览器 Network 面板显示协议是 h2。之前 HTTP/1.1 时我把小图标合并成雪碧图,现在听说 HTTP/2 不需要合并资源,就拆成了单独的小文件,结果好像适得其反?
这是我的 Nginx 关键配置:
server {
listen 443 ssl http2;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privkey.pem;
# 其他常规配置...
}
先改一下 Nginx 配置,加上 http2_push 来预加载关键资源:
再看看你的资源请求顺序。可以用 Chrome DevTools 的 Network 分析下,重点看下首屏渲染资源的优先级。
另外建议保留一些关键资源的合并,特别是那些会频繁请求的小图标。别完全抛弃雪碧图,可以针对不同场景混合使用。
最后提醒一句:HTTP/2 并不是万能药,优化还是得看具体场景和数据说话。慢慢调整,别急着全盘推翻之前的方案。