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两个新属性实现. 前者可指定选择的图像以及其大小,后者会定义一组媒体条 ...
随机推荐
- TCP连接建立系列 — 服务端接收SYN段
本文主要分析:服务器端接收到SYN包时的处理路径. 内核版本:3.6 Author:zhangskd @ csdn blog 接收入口 1. 状态为ESTABLISHED时,用tcp_rcv_esta ...
- 实战项目开发细节:C语言分离一个16进制数取出相应的位1或0
最近在公司开发一个关于钢琴的PCBA项目,项目大概是这样的,完成各种功能的测试,准备去工厂量产的时候可以通过软件快速甄别硬件是否短路,断路等问题. 其中,甄别好坏的方法是通过比如按键,或者其它的操作然 ...
- linux开发调试工具---GDB的使用
编译 gcc -g xxx.c -o xxxgdb gdb xxxgdb 进入gdb调试界面 查看代码 list ==> l 设置断点 可以以函数为断点 / 行数 break ...
- Android 在Fragment中执行onActivityResult不被调用的简单解决方法
在Android开发中,我们经常会用到FragmentActivity下嵌套多个Fragment,但是在开发过程中会发现在嵌套的Fragment中使用onActivityResult回调方法没有被执行 ...
- .net Entity Framework初识1
利用EF可以直接操纵数据库,在一些简单的项目里甚至完全不用写sql. 一 code first 1.在web.config中设置连接字符串 这一步可以省略.如果跳过这一步,程序会默认生成一个可用的连接 ...
- Aptana下Django1.6以后的项目模板结构改造
Django1.6以后的manage.py放在项目包目录的根目录下,这种情况下在create app的app也在这个目录下面,由此可能导致app的名称有可能会和广大的内建包或者第三方包发生命名冲突,解 ...
- RxJava 2.x 使用最佳实践
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76443347 本文出自[赵彦军的博客] 以前写过 Rxjava 系列教程, 如下所 ...
- JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
本文主要记录一下JBOSSAS 5.x/6.x 反序列化命令执行漏洞的测试过程 仅供学习 文中利用到漏洞环境由phith0n维护: JBoss 5.x/6.x 反序列化漏洞(CVE-2017-1214 ...
- Flask自带的常用组件介绍
Flaskrender_templatesessionurl_forredirectflashmake_responsejsonifyblueprintrequestabortgsend_from_d ...
- SSM博客
最近在写基于SSM 的博客,用的是spring+springmvc+mybatis搭建的,用的maven+github管理项目,目前完成了登录注册以及用户管理员的增删改查,后续的功能还需要完善,如何建 ...