使你的网站快速跑起来

性能真的很重要吗?javascript

性能很重要,这个你们都知道。为何咱们还要作出速度很慢的网站,给用户一个糟糕的体验呢?呵呵,让咱们进入重点。css

HTMLhtml

一.避免内链/嵌入式代码:前端

1) 内联式: 在HTML标签的style属性中定义样式,在onclick这样的属性中定义Javascript代码;java

2) 嵌入式: 在页面中使用<style>标签订义样式,使用<script>标签订义Javascript代码;css3

3) 引用外部文件:<style>标签中定义href属性引用CSS文件,在<script>标签中定义src属性引入Javascript文件.浏览器

1,2虽然减小了http请求数,可是增长了html的大小,相比3的整体大小甚小,便于分工操做,便于维护。缓存

二.样式在上,脚本在下:框架

<html>
  <head>
      <meta charset="UTF-8">
      <title>Browser Diet</title>
      <!-- CSS -->
      <link rel="stylesheet" href="style.css" media="all">
  </head>
  <body>
     <a>hello</a>
     <!-- JS -->
     <script async src="script.js"></script>
  </body>
</html>dom

1)样式在head里面,页面渲染很快,会使用户感受页面加载很快。反之,会先看到错乱的页面布局,给人感受很差。

2)脚本在上会影响html的渲染或并行加载,而且首屏加载,用户通常不须要看到功能,因此脚本在下为好。尝试用异步加载脚本的属性:async

三.压缩html

为了保持代码的可读性,最好的方法是在代码中添加注释和使用缩进。

可是对于浏览器来讲,这些都是不重要的。正由于如此,经过自动化工具压缩你的HTML是很是有用的。

经过移除多余的空白符、注释和一些与内容结构无关的的不须要的字符,可以节省一些字节。尝试用gzip压缩方式。

四.减小dom结点

用语义化的标签来代替万能的div。

五.《html写法对gzip压缩率的影响》
http://img01.taobaocdn.com/tps/i1/T1fd81FileXXcBgZH6-1263-2056.png

书写标签属性时,最好多个相同标签属性值顺序一致。可使gzip压缩更快。

CSS

一.压缩css

经过自动化工具压缩css,同压缩html。重复性的代码学会提炼。

二.合并多个css

广泛经过cdn合并或公司的合并工具进行合并,有效减小http请求数量。

三.合理使用css表达式

不是全部人都能合理使用css表达式的。因此把功能都交给javascript。css咱们要休息一下喽。

IMAGES

一.使用css sprite

将psd里面小的图层整合到一张图层里面,布局完成。布局要紧促。对于有些图片有毛边的,能够设置杂边的颜色。也能够将png-8设置成png-24(ie6滤镜处理)

二.用base64图片编码替代普通css sprite图片

使用前:

.img {
  background-image: url('image.png');
}

使用后:

.img {
  background-image: url('data:image/png;base64,iVBORw0KGgo');}

base64图片编码只针对于单独的图片,而不是css sprite图片,支持主流浏览器及ie8以上。能够减小http请求数量,可是对于没有gzip压缩的html,css来讲,减小http请求得来的大文件是不可取的。

三.优化图片

图片格式要控制好,在图片质量ok的状况下,png,jpg,gif格式根据状况合理利用。通常css sprite用png格式,动画图片用gif格式,色彩鲜艳的广告图片用jpg.

图片大小要控制好,网站能够缓存图片。通常一张广告图片要在100k左右,若是图片实在太大,能够将一张图片切成几块,拼接而成。

某前端css网站声明,凡是必须用图片来布局的都是耍流氓。随着css3的流行,这句话将成为一句座右铭。

四.《Progressive JPEG 解析》

http://img03.taobaocdn.com/tps/i3/T1MpCRXuJfXXbBVMZR-600-1938.jpg

综述,连续的jpg格式对性能更好。

JAVASCRIPT

一.异步加载文件

var vst = document.createElement('script');
    vst.type = 'text/javascript';
    vst.async = true;
    vst.src =srcIndex;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(vst, s);

当一些第三方文件等下载成了问题,或是致使页面加载负重。咱们就须要异步加载这些文件,async是个好的方式。

二.将循环的对象存储

使用前:

var str = "nanananana";
        for (var n = 0; n < str.length; n++) {}

使用后:

 var str = "nanananana",
        strLgth = str.length;
        for (var n = 0; n < strLgth ; n++) {}

循环对性能的消耗是很大的,将循环的对象存储,减小每次循环都要进行对象的计算。

三.最小化减小回流和重绘

使用前:

var coored = document.getElementById("ctgHotelTab");
    document.getElementById("ctgHotelTab").style.top = coored.offsetTop + 35 + "px";

使用后:

var coored = document.getElementById("ctgHotelTab"),
    offetTop = coored.offsetTop + 35;
    document.getElementById("ctgHotelTab").style.top = offetTop + "px";

当一个元素的布局不变,外观发生改变时,就会引发重绘。

当你设置style.top时,浏览器须要从新计算布局,咱们每次请求offsetTop时,都会使浏览器从新计算布局,改变一个布局,就会致使回流。

四.压缩javascript

经过自动化工具压缩js。同html和css。

五.合并多个js文件

广泛经过cdn合并或公司的合并工具进行合并,有效减小http请求数量。

六.源生js和框架js相比,针对循环,for比each要好。

性能测试工具

我常常使用的是YSLOWpage speed也不错。都会给你一些性能上的建议。

总结

性能很重要,毋容置疑。个人只是工做上的分享,仅供参考。详见:http://browserdiet.com/zh/ 

但愿你们多分享,共同窗习进步。

相关文章
相关标签/搜索