vue-cli2的性能优化

前几天终于将自己的项目打包到了服务器上,但是由于本人买的阿里云的学生服务器,所有网速慢点。但是最不能忍的是css加载速度直接到了18s!所以才有了这篇文章

文件分析

我们首先在项目上运行

 npm run build --report

运行成功后自动打开 http://127.0.0.1:8888
我们会看到下面的界面

gzip

由于大部分的游览器已经支持gzip了,所以我的第一步优化就是从gzip入手。

当我们查看刚才打开的页面并且点击gzip按钮的时候,我们看到数据压缩的大小

打开我们的项目,查看我们的config/index.js

会发现我们里面有productionGzip这个选项,它默认是false的,所以我们需要将这个设置成true,然后执行打包命令。

注意如果提示你少插件安装即可,因为我的版本是vue-cli2,所以插件版本不能过高,这里我推荐一个插件。

npm install compression-webpack-plugin@1.1.12

好的,打包之后发布我们可以看到我们页面加载速度已经稍微便快一些了。

由于我是部署在nginx上面的,所以我们需要nginx开启一下gzip选项:

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";

gzip选项可以写在http、server、location下面

cdn

一谈到cdn我就头疼,因为我的项目是vue-cli2的,而且说实话哈,我webpack根本就没学。当时认为直接搭框架干就完了呗,现在想想看,当时的自己真是蠢,早晚都得学。

好了,我当初再往上看了好多相关的教程。哎呀,这里我总结一下吧。

首先我们要清楚的一点是,vue如果是将你下载的第三方插件,比如说jquery啥的利用cdn优化的时候,一定要只将那些在vue首页加载的插件弄上cdn,其他的插件弄上cdn后,反而会变慢。

为啥嘞?
问的好!我们搞cdn的时候是将那些cdn链接弄到index.html里面引入的,就像这样:


<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
    <title>逝痕</title>
</head>

如果在首页塞上太多的资源链接的话,就会弄得很慢。

还有一件事~,就是按需引入的插件不要用cdn

由于本人的框架用的iview,所以如果利用cdn的话会产生很多bug。
所以我把眼光放到了vue、vue-router、vuex这样的插件。

所以,我们需要先找到对应自己版本的cdn,这里我推荐几个网站:jsdelivrunpkg

我对照上面的项目状况找到了我的版本,index.html代码如下:


<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>逝痕</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vuex@3.1.2/dist/vuex.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js"></script>

</head>

<body>
    <div id="app"></div>
</body>
</html>

vue-cli2需要改一下webpack配置,我们打开/build/webpack.base.conf

改动如下:

module.exports = {
    externals: {
        'vue': 'Vue',
        'vue-router': 'VueRouter',
        'vuex': 'Vuex'
    },
// ...
}

webpack的配置我推荐你看这个网站:外部拓展

运行我们的打包命令


npm run build --report

经过cdn我们发现我们的项目是这样的

图片压缩

cdn搞完了,但是说实话提升效果不是很好。打开我的控制台发现我的网站图片加载需要10s,所以我又将我的重心转到了图片压缩上面。

这里推荐两个网站:

http://www.bejson.com/ui/compress_img/

https://tinypng.com/

压缩之后替换图片即可

图片渐进式加载

关闭map资源

我们打包之后看到我们有很多的map后缀的js,其实这些东西都是可以不要的。

打开 /config/index.js

将productionSourceMap设置成false即可

posted @ 2021-01-21 20:32  逝痕枫舞  阅读(373)  评论(0编辑  收藏  举报