高性能网站进阶指南 笔记

1、优化循环远远比优化只执行一次的代码好得多;

2、DOM API效率低下,运行程序最大开销往往是DOM而不是Javascript;
3、当我们做性能优化时,不要浪费时间去尝试为那些不消耗大量时间的代码提速。评估优先,拒绝任何不能提供良好效益的优化;
4、浏览器在执行页面的Javascript期间无法响应其他的用户事件。因此,尽可能快地执行完页面中所有的Javascript是极其重要的,否则网页和浏览器本身可能变得非常缓慢甚至完全冻结;
5、webwork有助于提升浏览器的使用效率,将一些复杂运算放到后台计算,将串行变为并行;
6、在页面加载时,通过控制Javascript的函数数量加载量可以加快网页的初始化速度。(指在onload事件执行之前的下载量);
7、几种下载外部脚本且不被阻塞的技术:
XHR Eval
通过XMLHttpRequest从服务器端获取脚本,响应完成时通过eval执行内容。缺陷:不能跨域。
XHR 注入
通过XMLHttpRequest从服务器端获取脚本,响应完成时通过创建script元素注入其中执行内容。缺陷:不能跨域。
Script in Iframe
通过iframe的src属性加载脚本。
Script DOM Element
通过创建script标签元素来加载脚本。
Script Defer
IE特有
document.write Script Tag
通过把script标签代码用write方法放到页面中加载脚本。
8、浏览器忙指示器
图片丢失
9、脚本下载技术最佳方案决策树
10、解决异步脚本按顺序执行的办法
     硬编码回调
     window onload
     定时器轮询
     script onload(首选)
11、样式表的下载会阻塞行内脚本
解决方案:调整行内脚本的位置,使其不出现在样式表和任何其他资源之间。
12、http协议 chunked状态码

 一般情况HTTP的Header包含Content-Length域来指明报文体的长度。如:

      

     有时候服务生成HTTP回应是无法确定消息大小的,比如大文件的下载,或者后台需要复杂的逻辑才能全部处理页面的请求,这时用需要实时生成消息长度,服务器一般使用chunked编码。

     在进行Chunked编码传输时,在回复消息的Headers有transfer-coding域值为chunked,表示将用chunked编码传输内容。使用chunked编码的Headers如下(可以利用FireFox的FireBug插件或HttpWatch查看Headers信息,HttpWatch还可以查看chunked的个数):

     

     chunked采用以下方式编码:

     Chunked-Body=*chunk 

"0"CRLF 

footer 

CRLF 

chunk=chunk-size[chunk-ext]CRLF 

chunk-dataCRLF 

hex-no-zero=<HEXexcluding"0"> 

chunk-size=hex-no-zero*HEX 

chunk-ext=*(";"chunk-ext-name["="chunk-ext-value]) 

chunk-ext-name=token 

chunk-ext-val=tokenquoted-string 

chunk-data=chunk-size(OCTET) 

footer=*entity-header

     编码使用若干个Chunk组成,由一个标明长度为0的chunk结束,每个Chunk有两部分组成,第一部分是该Chunk的长度和长度单位(一般不写),第二部分就是指定长度的内容,每个部分用CRLF隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些没有写的头部内容。
13、gzip压缩原理:通过添加Accept-Encoding HTTP头来向Web服务器声明支持压缩:Accept-Encoding:gzip,deflate,当请求中包含这个头时,web服务器就会开启Gzip压缩功能。Web服务器会返回一个经过压缩的响应,并且用Content-Encoding头做标记:Content-Encoding:gzip。
14、可以通过事件委托来减少事件的绑定从而减少文件的大小。
15、图片压缩技术
16、可以使用多个域来下载静态资源,提高网页加载速度。特别是一些静态资源很多的网站。
17、如今大多数Web客户端和服务器端都使用HTTP/1.1,但也继续支持HTTP/1.0。在使用HTTP1.1时,许多浏览器遵循HTTP/1.1 RFC中的建议,限制每个服务端两个连接。然而当使用HTTP/1.0时,IE6和7可以打开更多的连接,通常增加到4个。类似的,FF增加到8个。降级到http 1.0可以加快并行下载速度,但是代价是放弃长连接。
18、少用iframe,iframe是开销最大的DOM元素。
19、高效css选择符使用
posted @ 2013-08-28 19:16  清风妙康  阅读(234)  评论(0编辑  收藏  举报