高性能web开发之网络传输环节

开发 前端
本节主要谈网络传输环节,利用HTTP 1.1的长连接特性,使得在一定程度上,服务器可以主动推送数据(减少了很多不必要的轮询)。

51CTO推荐专题:高性能WEB开发应用指南

1.减少请求数.

◆ 缓存,使用Expires 等设置过期时间;如果内容没有过期就不发送请求

◆ 合并小体积内容,例如吧数量众多的小图片放在一个图片,之后用css部分呈现(大体积的内容就别合并了)

◆ 延迟加载;部分内容,例如图片在页面呈现的时候才加载 (常用的就是滚动条到了以后才加载);减少不必要的请求

◆ 合并重复内容和文件

◆ 考虑使用第三方CDN资源,例如jQuery有免费的CDN,有些用户已经在其他网站访问过该内容了,那么到我们的网站加载就更快了 (而且使用CDN降低对我们服务器的压力)

◆ 使用HTML 5 中的Local Storage等保存数据

2.减少响应内容的体积.

◆ 适当的时候只返回响应头304 (HTTP缓存,如ETag等)

◆ 使用Gzip等压缩文件内容

◆ 使用免费的第三方工具,压缩css,js和html等文件的大小 (例如我们常见的 jquery.min.js)

◆ 适当使用Ajax操作

◆ 在适当的时候,将样式,HTML和数据分离 (数据量很大的时候极大减小文件体积)

  1. <ul id="id"> 
  2.     <li style="一大堆的样式">数据 </li> 
  3.     <li style="一大堆的样式">数据 </li> 
  4.     <li style="一大堆的样式">数据 </li> 
  5. </ul> 
  6. 分成HTML 样式 和数据3部分  
  7.  
  8. HTML  
  9. <ul id="id"> 
  10.     <li></li> 
  11.     <!-- 如果使用数据模板等方式 只需要保留一个Li 否则需要多个 --> 
  12. </ul> 

样式保存在CSS文件中一些基本的小常识 虽然有很多个li 不用给每个li指定class

数据

◆ 使用JSON返回 (如果觉得麻烦也可以嵌入在页面中)

◆ 选择体积更小的数据格式,例如JSON一般就比XML体积来的小 (都经过压缩以后还是更小)

◆ 在设计上,只传送变化的部分数据 (例如要获取100条数据,可能已经加载了90条,那么再加载10条就好了)

◆ 移除请求和响应中不必要的HTTP Header (例如WCF Restful service中有的时候要传递表明当前数据是JSON还是XML的HTTP Header)

◆ 部分功能,如压缩会消耗CPU, 如ajax等会增加开发工作量,请谨慎选择

3.增加请求并发数.

◆ RFC中,浏览器对于同一个域名下的资源只能使用2个线程同时进行访问(很多新的浏览器支持6个或者更多);解决方法是使用子域名,例如1.abc.com 2.abc.com

  1. <img src ="1.abc.com/1.png" /> 
  2. <img src ="1.abc.com/2.png" /> 
  3. <img src ="2.abc.com/3.png" /> 
  4. <img src ="2.abc.com/4.png" /> 
  5. <img src ="3.abc.com/5.png" /> 
  6. <img src ="3.abc.com/6.png" /> 
  7. <img src ="4.abc.com/7.png" /> 
  8. <img src ="4.abc.com/8.png" /> 

◆ 将一个超大的文件(例如有些人喜欢吧整个网站的js都放在一个文件)拆成一系列的中小文件 (有利于并发加载和缓存!)这个文件大小的Size选择很重要 我个人建议是10k-200k (依赖于网络)

◆ 上一条并没有和1-2冲突,文件太小太多也不行,文件太少太大也不行,这是一个平衡的问题

◆ 通过分拆文件,使得最常用页面(例如首页)的加载速度变快了

◆ 控制加载顺序,例如先加载页面大体结构,然后多个javascript异步请求加载数据(把一个大的html变为多个小的html片段)

4.其他特殊技术.

◆ 利用HTTP 1.1的长连接特性,使得在一定程度上,服务器可以主动推送数据(减少了很多不必要的轮询)

5.工具.

◆ Fiddler (Free)

◆ FireDebug (Free)

◆ HttpWatch

部分内容引用自MSDN和其他第三方文章..

【系列文章】

  1. 高性能WEB开发经验分享
  2. 高性能WEB开发之flush让页面分块逐步呈现
  3. 高性能WEB开发之疯狂的HTML压缩
  4. 高性能WEB开发之页面呈现、重绘、回流
  5. 高性能WEB开发之减少请求、响应的数据量
责任编辑:陈贻新 来源: 听说读写的博客
相关推荐

2011-04-18 10:16:30

WEB高性能

2011-04-07 13:53:25

Web工具

2011-04-19 11:06:03

JavaScriptweb

2011-04-27 10:57:29

高性能web开发

2011-04-21 09:59:48

WEBjavascript

2011-04-07 13:39:24

WebHTTP

2013-09-10 16:16:19

移动网站性能优化移动web

2011-06-14 09:27:43

高性能WEB开发

2011-04-22 09:54:37

CSSjavascript

2011-04-28 09:40:26

flush高性能Web开发

2011-04-25 10:11:57

高性能web开发

2011-04-21 10:47:29

Webjavascript

2023-10-31 18:52:29

网络框架XDP技术

2009-07-30 10:28:56

Web高性能开发

2016-08-23 14:37:21

2013-06-19 09:20:53

Web开发Web性能优化高性能

2016-11-28 09:19:27

2013-08-16 14:43:14

高性能移动Web移动Web站点移动Web

2013-09-10 17:13:57

移动网站性能优化移动web

2014-03-19 14:34:06

JQuery高性能
点赞
收藏

51CTO技术栈公众号