前端优化方案

为了让用户得到更好的体验,我们经常会采用一些手段来优化我们的前端工程,下面给大家简单介绍一些前端优化的方案

参照雅虎前端军规进行简单网页的优化

我们的优化原则有以下几个:

  • 能缓存的,尽量强缓存。
  • 引入外部资源时不要出现超时、404的状况。
  • 减少HTTP请求数。
  • 合理设置cookie的大小以及过期时间。
  • 合理利用懒加载。

网页内容的优化

1、懒加载数据。
首先根据标签的left和top属性判断是否显示在了屏幕中(如果显示在屏幕中,其left和top属性值应该是在0到窗口长宽之间)。
如果显示在屏幕中,则将src标签的内容替换为图片的url。

2、使用外部引入的css和js文件,并且引入的css和js越少越好(HTTP2.0不适用)。
这里可以使用webpack打包这些文件,也可以使用强缓存与协商缓存来缓存这些文件。

3、不要在中缩放图片。
img计算缩放也需要时间

4、避免重定向。
重定向会重新渲染网页。

5、尽量不要用iframe。
因为iframe会阻塞渲染。

6、使用base64编码将图片嵌入到样式表中,减少请求数(由于base64会比一般的图片大一点,只适用于那些体积比较小但是很常用的图片)。

7、使用雪碧图(精灵图):
通过使用background-position:-xpx -ypx;来调整图片的位置,不过HTTP2不适用,原因为HTTP2实际上是多路复用的,只用一个TCP连接,所以多个图片的请求也是在同一个TCP连接里,这样能省下非常多的请求时间,但坏处就是单连接开销很大,如果要传多个大文件,就很麻烦。

8、要有网站小图标favicon.ico。

如果没有小图标,会引起404,拖慢网页加载进度。

9、能使用jpeg就不要用png,能使用png8就不要用png24。
(1)色彩丰富的、大的图片切成jpg的;
(2)尺寸小的,色彩不丰富的和背景透明的切成gif或者png8的;
(3)半透明的切成png24。

10、使用canvas压缩图片。

css的优化

1、避免使用@import。
使用@import相当于将引入的css放在了页面底部,因为使用@import引用的文件只有在引用它的那个css文件被下载、解析之后,浏览器才会知道还有另外一个css需要下载,这时才去下载,然后下载后开始解析、构建render tree等一系列操作。因此使用@import会拖慢渲染的过程。

2、将样式表放在head中。
如果放在body中,可能出现在浏览器下载好css样式表之前,组件就已经加载好了的情况,这可能会导致重新渲染。

3、避免使用css表达式。
如:expression((new Date()).getHours()%2 ? “#B8D4FF” : “#F08A00” );
解析表达式和计算都需要时间。

JavaScript的优化

1、尽量减少DOM访问。

2、使用事件代理(减少DOM操作)。

3、把脚本放在底部(加载脚本时会阻塞页面渲染)。

4、合理使用节流函数和防抖函数。
前端优化方案_第1张图片

使用CDN优化加载速度

CDN即内容分发网络。它依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

前端优化方案_第2张图片

针对webpack打包优化

针对webpack打包优化主要是减少打包后的代码体积,主要的措施有:
1、进行tree-shaking
2、使用UglifyJS等插件压缩代码
3、分割代码、按需加载

我们可以使用webpack-bundle-analyzer这个插件来查看每部分代码的加载耗时,进而分析可以优化的地方。

开启Gzip压缩

这是一个非常有效的优化方案,可以减少60%左右的代码体积,使用node.js+express可以非常便捷的开启Gzip

const express = require('express'); 
const app = express();
const compression = require('compression'); 
app.use(compression()); // 注意,使用compression中间件必须要在其他中间件之前

你可能感兴趣的:(前端)