web优化(一)
今天读完了《高性能网站建设进阶指南》,记得博客园的某位前辈说,关于前端方面的书,带指南两个字的一般都是比较牛逼的,上一本看到的好书是《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优化(一)的更多相关文章
- web优化及web安全攻防学习总结
web优化 前端:(高性能网站建设进阶指南) 使用gzip压缩(节省服务器的 网络带宽) 减少http请求( 减少DNS请求所耗费的时间. 减少服务器压力. 减少http请求头) 使用cdn(用户可以 ...
- 转:Web优化 及常用工具包
Web优化: 减少http请求 避免404错误 在html页面header加入缓存标签 Gzip压缩网页 减少cookie体积 使用外部的js和css 消减js和css 压缩js 使用css spri ...
- Web优化躬行记(1)——CSS
Web优化的对象包括页面性能.用户体验.开发效率.代码优化.网络延迟等,本系列会列举出众多常用的优化技巧,每个技巧都可深入分析,在此只做抛砖引玉. 本系列优化内容提炼于<前端面试宝典>.& ...
- web优化 js性能高级篇
今天我们继续上一个阶段关于web的性能优化,如何对js高级进行优化 (1)闭包 何为闭包; 一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 我认 ...
- YaHoo Web优化的14条法则
Web应用性能优化黄金法则:先优化前端程序(front-end)的性能,因为这是80%或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP请求次数 80%的最终用户响应时间花在前端程序上,而其 ...
- 关于web优化(一)
我们所说的web,无非就是html,css(web font, image),JavaScript. HTML优化建议: 1. 尽量不要用table进行布局. 2. 尽量用最新的带有语义的h5标签,这 ...
- web优化
一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过 ...
- Web优化躬行记(2)——JavaScript
一.语言 1)慎用全局变量 当变量暴露在全局作用域中时,由于全局作用域比较复杂,因此查找会比较慢. 并且还有可能污染window对象,覆盖之前所赋的值,发生意想不到的错误. 0 == '' //tru ...
- Web优化躬行记(3)——图像和网络
一.图像 1)响应式图像 浏览器根据屏幕大小.设备像素比.横竖屏自动加载合适的图像. 响应式的功能可以通过srcset和sizes两个新属性实现. 前者可指定选择的图像以及其大小,后者会定义一组媒体条 ...
随机推荐
- Gathering Initial Troubleshooting Information for Analysis of ORA-4031 Errors on the Shared Pool
In this Document Purpose Troubleshooting Steps References APPLIES TO: Oracle Database - Enterp ...
- nasm预处理器(2)
多行宏 %macro: %macro foo 2 push rax push rbx mov rax,%1 mov rbx,%2 pop rbx pop rax %endmacro 宏名称后的数字代表 ...
- 大数据项目中的Oracle查询优化
今天发现自己之前写的一些SQL查询在执行效率方面非常不理想,于是尝试做了些改进. 需求为查询国地税表和税源表中,国税有而税源没有的条目数,之前的查询如下: SELECT COUNT(NAME) FRO ...
- MySQL性能调优——索引详解与索引的优化
--索引优化,可以说是数据库相关优化.理解尤其是查询优化中最常用的优化手段之一.所以,只有深入索引的实现原理.存储方式.不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! 一.BTre ...
- Vi 操作命令
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置 ...
- Web服务cxf框架发布2
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...
- Python字符串全解
1.字符串大小写转换 def strChange(): str = "niuXinLong@163.com" print("原字符串:" + str) prin ...
- python自动重试第三方包retrying
最近写了一个爬虫,需要连接国外的一个网站,经常出现掉线的情况,自己写了一个自动重连的代码,但感觉不够简洁... 后来就上万能的github,找到了一个第三包,基本能满足我的要求.这个第三方包就是ret ...
- hadoop配置文件详解系列(二)-hdfs-site.xml篇
上一篇介绍了core-site.xml的配置,本篇继续介绍hdfs-site.xml的配置. 属性名称 属性值 描述 hadoop.hdfs.configuration.version 1 配置文件的 ...
- Ubuntu 16.04开启SSH服务
安装: sudo apt-get install openssh-server 启动: sudo service ssh start 查询服务启动状态: sudo ps -e | grep ssh 或 ...