今天读完了《高性能网站建设进阶指南》,记得博客园的某位前辈说,关于前端方面的书,带指南两个字的一般都是比较牛逼的,上一本看到的好书是《javascript权威指南》是淘宝前段团队翻译的,800多页很厚的一本,目前看完第一遍了,估计这个周末会开始看第二遍,一开始是在学校图书馆找到的,后来看到200多页的时候觉得真是太经典了,于是自己去买了一本。好了,不着急感叹了,现在对着高性能网站建设这本书的目录总结我的部分思考,因为确实很多,所以会分成几篇来说,在其中我会不细究浏览器兼容的,只会就特例来提到浏览器差异和版本差异。

  首先,因为我自己是学底层的,学的是通信,所以会比较关注协议。HTTP是应用层的协议,在它之下是我们常说的套接字winsocket。http最初的协议很简单,只有几行,我们不去讨论。在一系列的RFC标准下,最终定义的http1.1,对于http1.1我们需要了解的是,它是一个持续的长连接,和以前相比,更容易传输含有图像和文件的网页。理解这个能为理解为何html5是如此的令人期待。因为从协议来说,html5中的websocket是实现了双向通信,是一种双工,以前是浏览器发起require,说,我要xx文件,而现在服务器可以上做到主动去push,当然我们有comet,用轮询,XHR流的方式来模拟双工,这其实是和http1.1协议的设计相违背的,而且其对服务器有一定的要求,看上去更像是在做善意的DDOS。。这边挖一个坑,关于http协议,协议头啊,状态啊,会在以后的博里面继续学习。

  在web浏览器发起请求再到服务器响应,这里是关于协议,浏览器本身,期间的状态和出错代码,安全方面的考虑都作为一个坑先埋下。在已经建立连接,浏览器加载资源,DOMtree建立,渲染,javascript文件下载执行,这些是我们这次讨论的主题。

  众所周知,浏览器本质是单线程的,它按fifo的顺序去执行事件,所以阻塞是我们所需要关心的。在web加载显示的全部过程里,最消耗时间的,并非很多书上所宣称的那样来自javascript,而是Domtree解析和页面的渲染,因此在后面我们也会提到,为何要用尽量使用变量而非对domtree进行操作,类似于getElementById();这样的,应尽可能的将其赋给一个局部变量。在雅虎的关于网站优化的35条守则,有这样一条,应尽可能的将js脚本放在代码的底部,因为js的下载执行会阻塞页面的渲染,如果js出现在很前会造成白屏现象,对于白屏现象,其实是一种页面的冻结,将其形象的称为白屏是因为倘若你将页面先至于about blank,然后加载的时候会发现页面渲染很慢,这会给用户带来不是很好的用户体验。js的执行会阻塞页面渲染的原因前面其实已经提到了,因为浏览器本质上是单线程的,那么现在来考虑更坏的情况,倘若有好几个js文件,他们依次被下载执行,我们会看到什么情况?对,页面很久都没有刷出来。那么可能,你的页面没有被打开就会被用户关闭了。所以,考虑到根源,我们当然一是可以把js竟可能的放在代码的底端,二就是是不是可以考虑模拟出一个并行的情况出来。接下来我们会看到很多了不起的想法,包括google 的gears 以及微软的js代码分拆,还有关于同源策略下跨域的处理等等。。我会在接下来的博里面慢慢说,初次博客,难免疏漏,欢迎有幸看到的大神拍砖。

  

web优化(一)的更多相关文章

  1. web优化及web安全攻防学习总结

    web优化 前端:(高性能网站建设进阶指南) 使用gzip压缩(节省服务器的 网络带宽) 减少http请求( 减少DNS请求所耗费的时间. 减少服务器压力. 减少http请求头) 使用cdn(用户可以 ...

  2. 转:Web优化 及常用工具包

    Web优化: 减少http请求 避免404错误 在html页面header加入缓存标签 Gzip压缩网页 减少cookie体积 使用外部的js和css 消减js和css 压缩js 使用css spri ...

  3. Web优化躬行记(1)——CSS

    Web优化的对象包括页面性能.用户体验.开发效率.代码优化.网络延迟等,本系列会列举出众多常用的优化技巧,每个技巧都可深入分析,在此只做抛砖引玉. 本系列优化内容提炼于<前端面试宝典>.& ...

  4. web优化 js性能高级篇

    今天我们继续上一个阶段关于web的性能优化,如何对js高级进行优化 (1)闭包 何为闭包; 一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.  我认 ...

  5. YaHoo Web优化的14条法则

    Web应用性能优化黄金法则:先优化前端程序(front-end)的性能,因为这是80%或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP请求次数 80%的最终用户响应时间花在前端程序上,而其 ...

  6. 关于web优化(一)

    我们所说的web,无非就是html,css(web font, image),JavaScript. HTML优化建议: 1. 尽量不要用table进行布局. 2. 尽量用最新的带有语义的h5标签,这 ...

  7. web优化

    一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过 ...

  8. Web优化躬行记(2)——JavaScript

    一.语言 1)慎用全局变量 当变量暴露在全局作用域中时,由于全局作用域比较复杂,因此查找会比较慢. 并且还有可能污染window对象,覆盖之前所赋的值,发生意想不到的错误. 0 == '' //tru ...

  9. Web优化躬行记(3)——图像和网络

    一.图像 1)响应式图像 浏览器根据屏幕大小.设备像素比.横竖屏自动加载合适的图像. 响应式的功能可以通过srcset和sizes两个新属性实现. 前者可指定选择的图像以及其大小,后者会定义一组媒体条 ...

随机推荐

  1. 第一个Polymer应用 - (1)创建APP结构

    原文链接: Step 1: Creating the app structure翻译日期: 2014年7月5日翻译人员: 铁锚在本节中,将使用一些预先构建好的Polymer元素来创建基本的应用程序结构 ...

  2. LeetCode(31)-Factorial Trailing Zeroes

    题目: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...

  3. Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

    NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行 ...

  4. Django(二)如何在IIS中部署django项目

    环境配置 windows7 Django 2.0 python 3.6 wfastcgi 3.0 关键步骤 打开CGI功能 控制面板/程序和功能/打开或关闭windwos功能,如图: 安装wfastc ...

  5. rcp perspective 添加9个视图均匀排列

    PageLayout布局方法 pageLayout.addView("NodePMTSStream" + ":1", IPageLayout.TOP, 0.5f ...

  6. oracle超出打开游标的最大数的原因和解决方案

    oracle超出打开游标的最大数的原因和解决方案 分类: Oracle相关2012-06-05 10:36 6362人阅读 评论(0) 收藏 举报 oracle数据库sqljavasessionsys ...

  7. volatile的适用场景

    volatile保证线程间的数据是可见的(共享的),但不保证数据同步 volatile相当于synchronized的弱实现,也就是说volatile实现了类似synchronized的语义,却又没有 ...

  8. linux中安装程序及账户管理

    程序安装及管理 1. Linux 应用程序基础  Linux命令与应用程序的关系 1):文件位置 系统命令:一般在/bin和/sbin目录中,或为Shell内部指令 应用程序:通常在/usr/bin和 ...

  9. EF Core使用SQL调用返回其他类型的查询

    假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法是编写 ADO.NET 代码,并从 EF 获取数据库 ...

  10. 关于图数据库查询语言:Cypher

    Neo4j Cypher Refcard:http://neo4j.com/docs/cypher-refcard/current/Neo4j发布开源图查询语言openCypher:http://ww ...