服务端性能优化
规则 1:减少网络请求
- 合并请求: 包括 JS、CSS
- 使用雪碧图: CSS Sprite
- 使用地图:HTML Map
- 内联小图片: Base64Encode
规则 2:使用内容分发网络 CDN
- 地理上离用户更近
- 专业的公司提供服务
规则 3:适当的使用缓存
- 为静态资源添加 Expires 响应头
- 为静态资源添加 Cache-Control 响应头
- 配置 Apache、Nginx、Express
规则 4:启用 GZIP 压缩
- 大幅度减少网络传输体积,压缩率高达: 60%~90%
- 多种文件类型: HTML、JS、CSS、Image
规则 5:减少 DNS 查找
- 单个站点不要使用太多域名
- 单次 DNS 查找约消耗 20~12ms
规则 6:避免重定向 3XX
- 重定向对浏览器意味着重头再来
- 每次重定向至少多花费 50ms
规则 7:配置有效的 ETAG
- 跟浏览器说明过期规则
bash
HTTP/1.1 2000K
Last-Modified: Tue,12 Dec 2006 03:03:59 GMTETag:“10c24bc-4ab-457e1c1fuContent-Length:12195
2
bash
GET /i/yahoo.gif HTTP/1.1
Host: us.yimg.com
If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
If-None-Match: "10c24bc-4ab-457elc1f"
HTTP/1.1 304 Not Modified
规则 8:让 Ajax 请求可缓存
- GZIP、内容压缩都可适用
规则 9:尽快输出第 1 个字节
- 尽快输出页面头部,浏览器能尽快开始干活
- 并行下载外链的 CSS
- 风靡一时的 BigPipe 也是基于此
规则 10:使用无 COOKIE 域名加载静态资源(后端)
- 减少静态资源加载时的网络传输量
- 静态资源加载通常是不需要 COOKIE 的
- 阿里: 精简 COOKIE 后,每年节省的费用百万级