前端性能优化准则:

一、减少http请求。
    措施:合并小图片,css控制背景图。合并CSS,合并JS
二、使用CDN(Content Deliver Network 内容分发网络)发布静态资源。
三、启用压缩组件。
    response header:Content-encoding
    request header:Accept-encoding
四、添加Expires响应头。
    response header:Expires(指定过期时间)
    缺点:1.需要指定具体的过期日期,时间到后需要重新指定。2.服务端客户端时钟必须一致。 
    http 1.1 引入Cache-Control:max-age 指定秒数解决该问题。
    
五、head 引入样式文件。
    解决:白屏,闪屏问题。浏览器加载无样式DOM有两种策略:
    1、先渲染无样式dom树,发现样式文件后重新加载,引起闪屏问题。
    2、延迟渲染dom树直到发现样式文件,加载完样式文件后再加载dom树,引起白屏问题。
六、底部引入脚本文件。
    早期浏览器(IE67),JS文件的下载会禁用浏览器的并行下载特性(http 1.1 规定浏览器可同时发起2个http链接),IE8以后浏览器可以并行下载多个脚本,但是由于并发的http连接数是有限的,所以依然会阻塞其它资源的下载,原因:
1、浏览器无法判断脚本中是否有document.write改变dom结构。
2、浏览器为了保证脚本的执行顺序。
    脚本的并行下载是必要的,但必须保证执行顺序,保证执行顺序的措施:
1、IE浏览器的defer属性 
2、动态创建script dom,并同时绑定onload,onreadystatechange(IE浏览器不支持onload,需要同时判断script dom的readyState的是是否等于loaded或者complate,有时候状态值会不经过loaded状态直接变为complete,而有时候变为loaded后并不切换到complate)事件。
3、document.write 脚本
七、精简CSS 脚本。
八、删除重复脚本。
九、减少DNS查询。
技巧:使用link标签的ref="dns-prefetch"类型,用于提前dns解析和缓存域名主机信息,以确保将来再请求同域名的资源时能够节省dns查找时间。例如淘宝主页:
十、自定义Etag。
    Etag的格式与web容器是耦合的,站点在服务器集群(多种web容器)下导致Etag值不一致,命中率很低。两种方案:
    1、禁用Etag
    2、自定义Etag
十一、缓存Ajax
 
下面这篇文章提供了不一样的思路来优化浏览器对静态资源的加载,比如利用LocalStorage缓存文件,link标签预加载资源等:
http://www.infoq.com/cn/articles/browser-resource-loading-optimization?utm_source=infoq&utm_medium=popular_links_homepage
 
非阻塞式加载脚本技术对比:
http://www.cnblogs.com/yslow/archive/2009/04/28/1445597.html

构建高性能JavaScript应用的更多相关文章

  1. 《高性能javascript》一书要点和延伸(上)

    前些天收到了HTML5中国送来的<高性能javascript>一书,便打算将其做为假期消遣,顺便也写篇文章记录下书中一些要点. 个人觉得本书很值得中低级别的前端朋友阅读,会有很多意想不到的 ...

  2. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)

    <高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

  3. 《构建高性能web站点》随笔 无处不在的性能问题

    前言– 追寻大牛的足迹,无处不在的“性能”问题. 最近在读郭欣大牛的<构建高性能Web站点>,读完收益颇多.作者从HTTP.多级缓存.服务器并发策略.数据库.负载均衡.分布式文件系统多个方 ...

  4. 高性能JavaScript 重排与重绘

    先回顾下前文高性能JavaScript DOM编程,主要提了两点优化,一是尽量减少DOM的访问,而把运算放在ECMAScript这一端,二是尽量缓存局部变量,比如length等等,最后介绍了两个新的A ...

  5. 【原文】前端程序员必须知道的高性能Javascript知识

    原文:前端程序员必须知道的高性能Javascript知识 想必大家都知道,JavaScrip是全栈开发语言,浏览器,手机,服务器端都可以看到JS的身影. 本文会分享一些高效的JavaScript的最佳 ...

  6. 构建高性能web站点--读书大纲

    用户输入你的站点网址,等了半天..还没打开,裤衩一下就给关了.好了,流失了一个用户.为什么会有这样的问题呢.怎么解决自己站点“慢”,体验差的问题呢. 在这段等待的时间里,到底发生了什么?事实上这并不简 ...

  7. 高性能javascript

    高性能javascript开发 标签(空格分隔): javascript DOM访问与修改 访问DOM元素是具有代价的,修改元素代价较为昂贵,会导致浏览器重新计算页面的几何变化. 尽量减少DOM访问, ...

  8. 【原创】构建高性能ASP.NET站点之二 优化HTTP请求(前端)

    原文:[原创]构建高性能ASP.NET站点之二 优化HTTP请求(前端) 构建高性能ASP.NET站点之二 优化HTTP请求(前端) 前言: 这段时间比较的忙,文章写不是很勤,希望大家谅解. 上一篇文 ...

  9. 《高性能javascript》学习总结

    本文是学习<高性能javascript>(Nichols C. Zakes著)的一些总结,虽然书比较过时,里面的知识点也有很多用不上了,但是毕竟是前人一步步探索过来的,记录着javascr ...

随机推荐

  1. 你做电商死法TOP10:你中了几枪?

    有相关报道说淘宝目前只有3%的店铺能够盈利,其余97%的店铺基本上都成了炮灰.这是一个非常可怕的数字,都说不赚钱的电商是犯罪,那么,是什么原因导致了会有如此庞大的电商群体一如既往的走在这千军万马的不归 ...

  2. 【总结整理】JavaScript的DOM事件学习(慕课网)

    事件:在文档或者浏览器窗口中发生的一些,特定的交互瞬间 HTML和JavaScript的交互通过事件 来实现 比如:1.滚动条向下滑动,加载图片 2.图片轮播,鼠标由2-5页调换 本章内容1.理解事件 ...

  3. Angular09 数据绑定、响应式编程、管道

    1 数据绑定的分类 1.1 单向数据绑定 1.1.1 属性绑定 -> 数据从组件控制类到组件模板 DOM属性绑定 HTML属性绑定 1.1.2 事件绑定 -> 数据从组件模板到组件控制类 ...

  4. PCC-S-02201, Encountered the symbol "DB_USER_OPER_COUNT"

    今天编译PROC程序时,遇到这个错误.最后发现原因是.pc文件里声明变量块时,不识别结构体. 今天时间紧知识用第一种方法暂时解决了.晚上抽时间用第二种方法优化一下代码. 查了很多资料,发现只有这个答案 ...

  5. Makefiles

    A tutorial by example Compiling your source code files can be tedious, specially when you want to in ...

  6. IOS开发学习 碎片S

    非常感谢提供一下内容的人和组织! 字符串编码:http://www.cnblogs.com/KevinYang/archive/2010/06/18/1760597.html Foundation框架 ...

  7. spark svm

    首先spark上的svm只能处理线性的,不能处理非线性的.其次spark上的svm求解过程与普通的不同.普通的是通过拉格朗日对偶,然后通过SMO方法求. 但是在spark上,则没有通过拉格朗日,而是直 ...

  8. Logstash过滤插件

    filter初级 Logstash安装 ### 设置YUM源 # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # t ...

  9. SAS笔记(4) FIRST.和LAST.临时变量

    FIRST.和LAST.临时变量是SAS很有特色的一点,我在R和Python中暂时没有发现类似的功能(也许它们也有这个功能,我不知道而已).考虑这样一种场景:我们有患者就诊的数据,每一条观测对应一个患 ...

  10. gulp使用文档

    gulp的优势 易于使用:通过代码优于配置的策略,Gulp让简单的任务简单,复杂的任务可管理. 构建快速:利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作. 插件高质:Gul ...