首先从一次完整的的请求说起:(以此为例get,www,baidu.com)

1,webbrower 发出request,

2,然后解析www.baidu.com为ip,找到ip的服务器,

3,服务器处理请求资源并返回请求的内容,

4,browser接受请求内容过程,(返回内容是按顺序读取的)

4.1遇到外联css,就会并发去读取css内容(),

4.2遇到图片时,回去并发读取图片,目前浏览器的并发数为2,

4.3遇到js时则会阻塞其他请求。

4.4加载完css后,browse开始渲染页面,

4.5直到加载完页面中的文本资源,这时dom的结构已经确定,会触发 document.ready方法

4.6 browse继续加载 图片和js,完成后。页面就全部加载完成,这时会触发 window.onload()方法

来分析一下里面具体的时间开销:

1,从1--4.4 用户才开始看到页面上有内容,在这以前页面就是空白的

2,解析域名也是有一定时间开销的,如果是大机房的可以通过路由配置 dns 缓存,依赖于外部机房环境,可控性比较小。

3,这是服务器处理的时间,优化程序代码可以减少这里的时间

4,

4.1浏览器在接收完css之前,一般是不去渲染dom的,以避免无所谓的刷新和闪烁。所以直到4.4用户才真正在页面上看到内容。

4.2 浏览器的单域名并发访问数 为2,多域名下并发数没限制,可以通过定义域名别名改善

4.3 浏览器加载js时会阻塞其他请求,直到加载完成。改善的话可以把js放到页面下面去加载。

从上面的流程可以分析出以下建议:

1,减少连接数(原因:并发限制,dns开销)

2,将css放到 head中。(1,首先这符合w3c规范,2,应为css加载完后,遇到dom对象时就会直接显示,可以更快的显示页面。)

3,将js放到页面底部,(加载js时会阻塞其他请求,这段时间页面没有反映,如果js中没有write的话应该放到底部,页面渲染完后再加载js)

4,减少下载内容(网络是有速度限制的,内容越少当然加载越快)

针对上面4条建议给出具体做法:

1,使用 css sprite将小图片合并,合并css、js。使用浏览器缓存: cache-control、expires。不使用etag

2、3不用说了,上面已经解释清楚了。

4,采用gzip压缩,可以使用 jsmin 将js精简,使用工具将css,html精简,尽可能缩减图片。

按照 性能黄金法则 说明: 文本内容只占所有时间的10%-20%, 这样做以后 至少能将时间缩小40%-50%。能明显改善用户体验。

这只是一些建议参考,具体的需要你针对自己的网站进行分析,分析工具可以使用firedebug,yslow,(这两个可以集成)

yslow会直接给出你建议。

转自:http://www.iteye.com/topic/1010833

最新文章

  1. ABP源码分析三十二:ABP.SignalR
  2. python ide ---wing 注册机
  3. ubuntu网络设置
  4. MYSQL的增删改查语句样码
  5. Eclipse Memory Analyzer,内存泄漏插件,安装使用一条龙
  6. K2 如何和 Java 做整合?
  7. (转)redis 学习笔记(1)-编译、启动、停止
  8. database first表更新一个表会更新所有的model,包括添加验证代码,解决办法
  9. facebook登录(集成FBSDKLoginKit) result的isCancelled总是YES token为nil
  10. Windows命令行(DOS命令)教程-3(转载)http://arch.pconline.com.cn//pcedu/rookie/basic/10111/15325_2.html
  11. Oracle EBS WMS特征(一)
  12. Jquery 获取上传文件大小
  13. angular destroy & jquery destroy
  14. 【开发技术】Beyond Compare
  15. matlab 对tif数据高程图的处理分析
  16. Mybatis使用动态代理实现拦截器功能
  17. 学习笔记-AngularJs(七)
  18. linux系统管理 启停命令
  19. [python-opencv] 模糊操作
  20. Oracle 关于WKT构造SDO_GEOMETRY的问题。

热门文章

  1. [ZPG TEST 108] Antimonotonicity【贪心】
  2. assets与res/raw资源目录的区别
  3. HttpURLConnection教程
  4. 移动端如何定义字体font-family
  5. 在spring data jpa中使用自定义转换器之使用枚举转换
  6. jQuery相关知识总结
  7. win7+idea+maven搭建spark源码阅读环境
  8. qt creator转换到 COFF 期间失败: 文件无效或损坏
  9. cf536d——优先队列的运用
  10. thisInObject