解决vue项目打包后文件过大导致首屏加载30s+的问题
依赖
vue v2.6
axios+tailwindcss+element-ui+...
文件打包情况
File Size Gzippeddist/js/chunk-vendors.fb40d429.js 1205.36 KiB 337.06 KiB
dist/js/album~articleAdd~articleEdit.84528c7c.js 69.05 KiB 23.07 KiB
dist/js/articleReplices.97fd5e5f.js 15.29 KiB 4.83 KiB
dist/js/album.9c381f9e.js 14.08 KiB 4.03 KiB
dist/js/app.976ad1f5.js 14.07 KiB 4.81 KiB
dist/js/article.81034e7e.js 9.77 KiB 3.83 KiB
dist/css/app.81735294.css 2224.75 KiB 205.37 KiB
dist/css/chunk-vendors.fd94e02a.css 441.91 KiB 112.52 KiB
dist/css/album.790777ae.css 7.36 KiB 1.20 KiB
dist/css/articleReplices.a69cc70c.css 6.82 KiB 1.12 KiB
dist/css/chunk-b5d7d804.a912b24b.css 4.78 KiB 0.98 KiB
问题分析
1.vendorsjs文件过大,是由于所有的第三方库js文件都打包在这个文件下。
2.vendorcss文件过大,主要原因tailwindcss,element-uicss文件过大导致。
3.以上文件过大问题导致在线访问需要30s+。
解决方案
解决文件过大问题方案:
1.第三方文件库拆分打包;
参考:webpack SplitChunksPlugin实用指南
2.CDN引入依赖库;
参考:使用externals解决chunk-vendors.js过大问题
3.gzip压缩文件;
参考:vue-cli3项目开启gzip压缩
方案选择
方案1和方案2都是解决第三方库的问题,由于当前的项目比较简单,暂时不考虑以后项目升级维护等问题,所以虽然方案2将第三方库剥离项目,但还是选择方案2。第三个压缩文件是个可选方案,不与其他方案冲突,也可以同时使用。本着追求更高更快更强的精神,我们就选择方案2和方案3的结合;
实施
1.css文件问题解决
tailwindcss无用样式过滤,根据官网
删除未使用的CSS
// tailwind.config.js
module.exports = {purge: ['./src/**/*.html','./src/**/*.vue','./src/**/*.jsx',],theme: {},variants: {},plugins: [],
}
2.cdn引入vue, element-ui css和js问题解决
```
// vue.config.js
module.exports = {chainWebpack(config) {const cdn = {css: [// element-ui css'https://unpkg.com/element-ui/lib/theme-chalk/index.css'],js: [// vue must at first!'https://unpkg.com/vue/dist/vue.js',// element-ui js'https://unpkg.com/element-ui/lib/index.js']}config.plugin('html').tap(args => {args[0].cdn = cdnreturn args})}
}// /public/index.html
<!-- 引入样式 -->
<% for(var css of htmlWebpackPlugin.options.cdn.css) { %><link rel="stylesheet" href="<%=css%>">
<% } %>
<!-- 引入JS -->
<% for(var js of htmlWebpackPlugin.options.cdn.js) { %><script src="<%=js%>"></script>
<% } %>
3.gzip压缩
使用webpack插件compression-webpack-plugin,打包后dist文件中*.gz文件为压缩文件
// vue.config.js
const CompressionPlugin = require("compression-webpack-plugin");module.exports = {configureWebpack: config => {if (process.env.NODE_ENV === 'production') {return {plugins: [new CompressionPlugin({test: /\.(js|css)$/,// 匹配文件名}),]}}},
}
nginx配置
#开启gzip功能
gzip on;
# 是否在http header中添加Vary: Accept-Encoding,给CDN和代理服务器使用,针对相同url,可以根据头信息返回压缩和非压缩副本
gzip_vary on;
#开启gzip静态压缩功能,开启nginx_static后,对于任何文件都会先查找是否有对应的gz文件
gzip_static on;
#gzip 压缩类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
效果
优化后打包
File Size Gzippeddist/js/chunk-vendors.510dc93b.js 418.56 KiB 129.36 KiBdist/js/articleAdd~articleEdit~c-album 69.05 KiB 23.08 KiB.9f45d364.jsdist/js/articleReplices.e86f355e.js 15.29 KiB 4.83 KiBdist/js/app.a18348b2.js 14.68 KiB 4.92 KiBdist/js/c-album.f68189a0.js 13.66 KiB 3.97 KiBdist/js/article.df529f47.js 9.77 KiB 3.83 KiBdist/css/chunk-vendors.fd94e02a.css 441.91 KiB 112.52 KiBdist/css/app.c56487ee.css 12.66 KiB 3.21 KiBdist/css/c-album.790777ae.css 7.36 KiB 1.20 KiB
优化后在线访问
62 requests
672 kB transferred
2.1 MB resources
Finish: 3.59 s
DOMContentLoaded: 2.33 s
Load: 2.51 s
解决vue项目打包后文件过大导致首屏加载30s+的问题相关推荐
- 快速解决Vue项目打包后文件过大问题
快速解决Vue项目打包后文件过大问题 为什么打包后文件过大? 如何快速解决 一.路由懒加载[使用es6提案的import()方式] 二.CDN引入 为什么打包后文件过大? 移动app项目,使用vue- ...
- vue 关闭 窗口后清除所有数据_Vue首屏加载速度优化,我用这几个技巧提升80%以上...
前端潮咖 点击上面蓝字,关注我们! 关注 关注前端潮咖,每日精选好文 作者:谁动了我的橘子 来源:https://juejin.im/post/5edf5b22e51d4578975a7024 在Vu ...
- 打包后index.html路径错误,解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题...
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题 2018年05月23日 10:05:35 for_weber 阅读数:14179 Vue项目运行npm run buil ...
- php项目index页面空白,如何解决vue项目打包后打开页面空白的问题
这篇文章主要介绍了vue项目打包后打开空白解决办法,内容挺不错的,现在分享给大家,也给大家做个参考. 网上很多说自己的VUE项目通过Webpack打包生成的list文件,放到HBulider打包后,通 ...
- vue打包完index.html空白,解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题-20210315083204.pdf-原创力文档...
解解决决Vue项项目目打打包包后后打打开开index.html页页面面显显示示空空白白以以及及图图片片路路径径错错误误的的问问题题 V ue项目运行npm run build后会生成一 dist文件夹 ...
- vue 打开html流_解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题...
Vue项目运行npm run build后会生成一个dist文件夹,我们一般都是把这个文件夹部署到服务器上.dist文件夹里边有一个static文件和一个index.html页面,这个index就是最 ...
- 解决vue项目打包后打开index.html一片空白
Vue项目运行npm run build后会生成一个dist文件夹,我们一般都是把这个文件夹部署到服务器上.dist文件夹里边有一个static文件和一个index.html页面,这个index就是最 ...
- vue 打开html流_三种方案解决Vue项目打包后dist中的index.html用浏览器无法直接打开的问题...
index.html为什么打不开? Vue打包后生成的dist文件中的index.html,双击在浏览器中打开后发现一片空白,打开控制台有很多报错:"Failed to load resou ...
- 解决vue项目打包后woff、tff资源路径加载错误
错误路径 解决方法: 重新打包
最新文章
- 是时候抛弃旧的摩尔定律了
- 5.5.3 per-connection time zone support
- Spring工作原理分析
- mysql fetch rows_差异mysql_fetch_array()和mysql_fetch_rows()函数_mysql
- matlab 投票法_张量投票算法及其使用并分析.pdf
- Linux(ubuntu)——FTP服务器
- (转)Arcgis for javascript实现百度地图ABCD marker的效果
- Vue使用vue-cli基于脚手架编写项目_自己编写一个vue基本项目_认识项目结构---vue工作笔记0019
- 公司发声明了!禁止所有程序员使用 Lombok !再使用绩效直接打C!
- CSS的position属性
- html右侧客服代码,非常好看的jQuery网站右侧固定在线客服代码
- 《Python金融大数据风控建模实战》 第5章 变量编码方法
- 大白菜PE系统查看电脑开机密码教程
- Kingston U盘 量产
- 掌上电脑是不是微型计算机,《掌上电脑Vs.商务通》的背后
- QT中设置字体和更改字体颜色
- 升级Android8.0系统原来APP图标变为小机器人的问题
- Linux那些事儿之我是U盘(5)外面的世界很精彩
- 递归回溯--数字分解java代码
- 如何改进企业旧式工时管理系统?
热门文章
- vue实现在用户关闭或刷新浏览器当前网页时弹出提示“系统可能不会保存您所做的更改”
- 【车间调度】变邻域遗传算法求解柔性作业车间调度问题
- python爬虫成长之路(一):抓取证券之星的股票数据
- LeetCode-Revers_Bits
- 【lssvm预测】基于飞蛾扑火算法改进的最小二乘支持向量机lssvm预测
- 腾讯小小警告Groupon:中国地盘听我的
- 计算机组成原理 微机,【2017年整理】计算机组成原理-微机实验指导书.doc
- precision scale
- 目标检测数据集:坦克(1)
- 奥迪J518方向锁通病维修