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两个新属性实现. 前者可指定选择的图像以及其大小,后者会定义一组媒体条 ...
随机推荐
- 理解 Linux 条件变量
理解 Linux 条件变量 1 简介 当多个线程之间因为存在某种依赖关系,导致只有当某个条件存在时,才可以执行某个线程,此时条件变量(pthread_cond_t)可以派上用场.比如: 例1: 当系统 ...
- oracle查询表索引
转载 http://blog.sina.com.cn/s/blog_5376c7190101hvvb.html 如下: select * from user_indexes where table_n ...
- 移动端调试技巧(禁止webviuew,inspect等)
如果由于某种原因(天朝FQ),不能支持google 的 inspect 调试 或者再想在某个APP里面调试你的页面,但是没有打开APP的webview ,也不能授权调试 在或者,Fider 可以拦截 ...
- mybatis源码解读(二)——构建Configuration对象
Configuration 对象保存了所有mybatis的配置信息,主要包括: ①. mybatis-configuration.xml 基础配置文件 ②. mapper.xml 映射器配置文件 1. ...
- TensorFlow实践笔记(一):数据读取
本文整理了TensorFlow中的数据读取方法,在TensorFlow中主要有三种方法读取数据: Feeding:由Python提供数据. Preloaded data:预加载数据. Reading ...
- nginx for Windows
zt from nginx official site. Known issuesPossible future enhancements Version of nginx for Windows u ...
- Django Channels简明实践
1.安装,如果你已经安装django1.9+,那就不要用官方文档的安装指令了,把-U去掉,直接用: sudo pip install channels 2.自定义的普通Channel的名称只能包含a- ...
- OCR智能识别身份信息
本人研究了两款OCR智能识别的API,下面做详解! 第一款是百度云的OCR识别,填写配置信息,每天有五百次免费的识别次数,适合中小型客户流量可以使用.API文档:http://ai.baidu.com ...
- Windows10远程报错:由于CredSSP加密Oracle修正
Windows10远程桌面连接 报错信息 : 网上找到方法 但是奈何是 "Win10家庭版" 不能使用这个办法,具体操作可以看最后的引用链接 !!!! 策略路径:"计算机 ...
- Lintcode401 Kth Smallest Number in Sorted Matrix solution 题解
[题目描述] Find the kth smallest number in at row and column sorted matrix. 在一个排序矩阵中找从小到大的第 k 个整数. 排序矩阵的 ...