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两个新属性实现. 前者可指定选择的图像以及其大小,后者会定义一组媒体条 ...
随机推荐
- The 15th tip of DB Query Analyzer
The 15th tip of DB Query Analyzer ---- SQL Execute Schedule function is realized in 6.01 Ma Gen ...
- 面试之路(13)-android apk之间共享数据的方式以及shareUserId详解
1.通过content Provider/sharedPreferrence 2.通过shareUserId 我们详细介绍一下shareUserId: Android App Sandbox(andr ...
- mysql 无法插入中文
MySQL数据库默认编码已经是utf8了, default-character-set = utf8,可是向数据库中表中插入中文时,却老是出现 ....\xB5\xA5\xD1\xA1 for col ...
- CRM客户关系管理系统(十)
第十章.kingadmin+admin+actions功能开发 10.1. django admin的action 可以自己写个函数执行批量操作 crm/admin.py 后台admin actio ...
- Python__flask初识
1. debug:在app.run()里面加上app.run(debug=True), 在浏览器中调试的时候可以直接显示出错误. 2. 在url中传递参数,可以这样 @app.route('/ch ...
- Java---SSH(MVC)面试题
1. 谈谈你mvc的理解 MVC是Model-View-Controler的简称.即模型-视图-控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开. MVC中的模型 ...
- Strom topology 设计的演进
场景:采集日志数据,日志数据有多个字段组成,需求是根据日志数据中的N个字段(维度),去统计指标数据(个数.平均值)等.
- Web系统测试Web安全性测试
WEB安全性测试介绍WEB安全性测试--拒绝服务攻击WEB安全性测试--文件上传漏洞WEB安全性测试--跨站攻击WEB安全性测试--SQL注入一WEB安全性测试--SQL注入二WEB安全性测试--SQ ...
- WSGI及gunicorn指北(二)
pyg0已经大概了解了wsgi.现在他决定深入探索他们实际在生产环境里用到的web 服务器 -gunicorn. 先来看看官网的介绍:Gunicorn 是一个运行在Unix上的python WSGI ...
- python---购物车
购物车功能如下: 1. 输入收入多少,购买商品 2. 打印购物清单,根据清单选择商品: 3. 结算,打印购物清单及总金额 # -*- coding:utf-8 -*- # LC goods=[[1,' ...