前端优化

转发:https://www.cnblogs.com/xuniannian/p/7452440.html

 

性能优化的原则是什么?

一是多使用内存和缓存,

二是减少CPU计算,减少网络,减少I/O.

那身为前端人员,我们应该从哪入手呢?

一是在加载页面和静态资源的时候,

二是页面渲染时

具体方案如下

一 资源压缩合并,尽量减少 HTTP 请求

1.合并脚本跟样式文件,可以把多个 CSS 文件合成一个,把多个 JS 文件合成一个。

2.CSS Sprites 利用 CSS background 相关元素进行背景图绝对定位,把多个图片合成一个图片。

二 使用浏览器缓存,缓存的分类,缓存的原理

   在用户浏览网站的不同页面时,很多内容是重复的,比如相同的JS、CSS、图片等。如果我们能够建议甚至强制浏览器在本地缓存这些文件,将大大降低页面产生的流量,从而降低页面载入时间。

   根据服务器端的响应header,一个文件对浏览器而言,有几级不同的缓存状态。

   1、服务器端告诉浏览器不要缓存此文件,每次都到服务器上更新文件。

   2、服务器端没有给浏览器任何指示。

   3、在上次传输中,服务器给浏览器发送了Last-Modified或Etag数据,再次浏览时浏览器将提交这些数据到服务器,验证本地版本是否最新的,如果为最新的则服务器返回304代码,告诉浏览器直接使用本地版本,否则下载新版本。一般来说,有且只有静态文件,服务            器端才会给出这些数据。

   4、服务器强制要求浏览器缓存文件,并设置了过期时间。在缓存未到期之前,浏览器将直接使用本地缓存文件,不会与服务器端产生任何通信。

        我们要做的是尽量强制浏览器到第四种状态,特别是对于JS、CSS、图片等变动较少的文件。

三 非核心代码异步加载

四  使用CDN 让资源加载更快

五 预解析DNS

六 将样式文件放在页面顶部,将脚本放在底部

七  图片的懒加载

八  减少DOM查询,对DOM 查询做缓存

九 减少DOM操作,多个操作尽量合并在一起执行

var oFragmeng = document.createDocumentFragment(); 

for(var i=0;i<10000;i++) {

   var op = document.createElement("span");

   var oText = document.createTextNode(i);

   op.appendChild(oText);

   //先附加在文档碎片中

   oFragmeng.appendChild(op);

}

  //最后一次性添加到document中

  document.body.appendChild(oFragmeng);

十 事件节流

$(document).ready(function() {

  var timer = 0;

  $(window).scroll(function() {

    if (!timer) {

      timer = setTimeout(function() {

      checkScrollPosition(); timer = 0;

      }, 250);

    }

   }).trigger('scroll');

});

十一 尽早执行操作(如DOMContentLoaded)

  1. 解析HTML结构。

  2. 加载外部脚本和样式表文件。

  3. 解析并执行脚本代码。

  4. DOM树构建完成。//DOMContentLoaded

  5. 加载图片等外部文件。

  6. 页面加载完毕。//load

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值