总结
- 加快请求速度(使用CDN, keep-alive,Websocket,避免重定向,优先加载CSS文件)
- 增多请求并发(Domian-Hash)
- 减小请求数目(合并文件、雪碧图)
- 减小请求体积(压缩图片和文件,Gzip,懒加载,Cookie-Free(减少不必要的cookie),Cache-Control,合理设置缓存)
要点
在 HTTP/1.1 协议中「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞」。
Domain Hash技术来使用多个域名加大并发量(因为浏览器是基于domain的并发控制,而不是page),不过过多的散布会导致DNS解析上付出额外的代价,所以一般也是控制在2-4之间。
这里常见的一个性能小坑是没有机制去确保URL的哈希一致性(即同一个静态资源应该被哈希到同一个域名下),而导致资源被多次下载。
再怎么提速,页面上过百的总资源数也仍然是很可观的,如果能将其中一些很多页面都用到的元素如常用元素如按钮、导航、Tab等的背景图,指示图标等等合并为一张大图,并利用css background
的定位来使多个样式引用同一张图片,那也就可以大大的减少总请求数了,这就是css sprites的由来。
keep alive技术的存在使得浏览器复用现有连接和服务器通信比创建新连