谈谈前端性能优化(一)

性能优化

一、如何进行网站性能优化

  • content方面
  1. 减少HTTP请求:合并文件、CSS精灵、inline Image
  2. 减少DNS查询:DNS查询完成之前浏览器不能从这个主机下载任何任何文件。方法:DNS缓存、将资源分布到恰当数量的主机名,平衡并行下载和DNS查询
  3. 避免重定向:多余的中间访问
  4. 使Ajax可缓存
  5. 非必须组件延迟加载
  6. 未来所需组件预加载
  7. 减少DOM元素数量
  8. 将资源放到不同的域下:浏览器同时从一个域下载资源的数目有限,增加域可以提高并行下载量
  9. 减少iframe数量
  10. 不要404
  • Server方面
  1. 使用CDN
  2. 添加Expires或者Cache-Control响应头
  3. 对组件使用Gzip压缩
  4. 配置ETag
  5. Flush Buffer Early
  6. Ajax使用GET进行请求
  7. 避免空src的img标签
  • Cookie方面
  1. 减小cookie大小
  2. 引入资源的域名不要包含cookie
  • css方面
  1. 将样式表放到页面顶部
  2. 不使用CSS表达式
  3. 不使用IE的Filter
  • Javascript方面
  1. 将脚本放到页面底部
  2. 将javascript和css从外部引入
  3. 压缩javascript和css
  4. 删除不需要的脚本
  5. 减少DOM访问
  6. 合理设计事件监听器
  • 图片方面
  1. 优化图片:根据实际颜色需要选择色深、压缩
  2. 优化css精灵
  3. 不要在HTML中拉伸图片
  4. 保证favicon.ico小并且可缓存
  • 移动方面
  1. 保证组件小于25k
  2. Pack Components into a Multipart Document

二、常用的前端性能优化的方法


  1. 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
  2. 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
  3. 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。
  4. 当需要设置的样式很多时设置className而不是直接操作style
  5. 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作
  6. 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)
  7. 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳
  8. 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢

四、关于性能优化问题


  1. 代码层面:避免使用css表达式,避免使用高级选择器,通配选择器
  2. 缓存利用:缓存Ajax,使用CDN,使用外部js和css文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等
  3. 请求数量:合并样式和脚本,使用css图片精灵,初始首屏之外的图片资源按需加载,静态资源延迟加载
  4. 请求带宽:压缩文件,开启GZIP
  • 代码层面的优化
  1. 用hash-table来优化查找
  2. 少用全局变量
  3. 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能
  4. 用setTimeout来避免页面失去响应
  5. 缓存DOM节点查找的结果
  6. 避免使用CSS Expression
  7. 避免全局查询
  8. 避免使用with(with会创建自己的作用域,会增加作用域链长度)
  9. 多个变量声明合并
  10. 避免图片和iFrame等的空Src。空Src会重新加载当前页面,影响速度和效率
  11. 尽量避免写在HTML标签中写Style属性

五、前端性能优化最佳实践

  1. 性能评级工具(PageSpeed 或 YSlow)
  2. 合理设置 HTTP 缓存:Expires 与 Cache-control
  3. 静态资源打包,开启 Gzip 压缩(节省响应流量)
  4. CSS3 模拟图像,图标base64(降低请求数)
  5. 模块延迟(defer)加载/异步(async)加载
  6. Cookie 隔离(节省请求流量)
  7. localStorage(本地存储)
  8. 使用 CDN 加速(访问最近服务器)
  9. 启用 HTTP/2(多路复用,并行加载)
  10. 前端自动化(gulp/webpack)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值