Vue如何提升首屏加载速度实例解析_vue.js

来源:脚本之家  责任编辑:小易  

方法一、加大驱动电压研究结果表明,只要把驱动电压提高至原有基础的一倍,就可以使其响应时间从原来的50ms缩短到了5ms。当然,这个方法也是存在着一定的负面影响的。液晶拼接屏显示都是由很多个小的液晶面板所组成,提高的电压会形成过冲电压,会使液晶返回的难度增加不少,从而导致其下降时间与灰阶响应时间延长了不少。而且过度补偿也会导致一定的危害,会导致屏幕上显示的图像严重失真。更加严重的是,过冲电压除了会导致灰阶下降外,还有可能会缩短拼接大屏幕的使用寿命。所以从目前的技术来看,加大驱动电压这个技术也不是很成熟,还不能用在实际中。方法二、降低厚度根据最新的研究结果以及研究数据表明,假如拼接大屏的厚度降低20,其响应速度则会在原有基础上提高35。从这个可以知道,拼接大屏厚度减小对于提升三星液晶拼接屏打开速度是有好处的。但是缩短响应时间的同时也会给大屏带来一系列的负面影响。厚度太薄,在制造上会增加一定的难度,而且会使屏幕显示的色彩变得暗淡,可视视角变小。除了这些外,还有可能会使屏幕上的坏点出现的几率增加,产品的成品率会降低。从三星液晶拼接屏生产商的角度来说,制造成本也会随之提高许多。所以要想减小大屏的厚度,存在的困难还是比较多的,而且目前也没有一套非常完善的技术来解决这个问题www.zgxue.com防采集请勿采集本网。

在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏的体验。

提高网站打开速度的方法有很多,可以从考虑以下几方面的可行性开始: 1避免重定向 可以将重定向简单地理解为网页的自动跳转。2删减Flash页面 参考资料:如何提高营销型网站的打开速度?

这是优化前的页面加载状态:执行npm run build打包项目,出来的vendeor.js文件,基本都是1M以上的的巨大文件,没有用户能忍受5s以上的loading而不关闭页面的,如图所示:

可以这样 写一个服务,就是按行数读数据 先写一个页面 上面写4.5个timer,然用分别用这几个timer去请求这个服务,读数据.间接的实现了多线程. 清求写成事件驱动的.一个timer执行完了。马上开始请求下面的行数

当项目在挂载到服务器上,平均都是10S以上加载出来,好家伙这加载时间,仿佛过了半个世纪,很烦人,心态boom, 开发者甚至都有种想砸电脑的冲动(·#*@#¥……&*)!

网站大量使用flash除了影响网站的访问速度外,还不利于SEO,另外,如果网站的图片比较多,可以使用图片处理工具把图片处理的小些,从而提高网站页面的加载速度。首度近期动态:首度SEO为阿丫团购网,

我们先来分析下前端加载速度慢原因

1. 首先安装webpack的可视化资源分析工具,命令行执行:

npm i webpack-bundle-analyzer -D

2. 然后在webpack的dev开发模式配置中,引入插件,代码如下:

const BundleAnalyzerPlugin = require('webpack-bundle-plugin').BundleAnalyzerPluginplugins: [ new BundleAnalyzerPlugin()]

3. 最后命令行执行npm run build --report, 浏览器会自动打开分析结果,如下所示:

可以看到vue全家桶相关依赖占用了很大的空间,对webpack的构建速度和网站加载速度都会有比较大的影响。单页应用会随着项目越大,导致首屏加载速度很慢,针对目前所暴露出来的问题,有以下几种优化方案可以参考:

有针对性的优化方案

一、对于第三方js库的优化,分离打包

生产环境是内网的话,就把资源放内网,通过静态文件引入,会比node_modules和外网CDN的打包加载快很多。如果有外网的话,可以通过CDN方式引入,因为不用占用访问外网的带宽,不仅可以为您节省流量,还能通过CDN加速,获得更快的访问速度。但是要注意下,如果你引用的CDN 资源存在于第三方服务器,在安全性上并不完全可控。

目前采用引入依赖包生产环境的js文件方式加载,直接通过window可以访问暴露出的全局变量,不必通过import引入,Vue.use去注册

在webpack的dev开发配置文件中, 加入如下参数,可以分离打包第三方资源包,key为依赖包名称,value是源码抛出来的全局变量。如下图所示,可以看到打包后vue相关资源包已经排除在外了。对于一些其他的工具库,尽量采用按需引入的方式。

externals: { vue: 'Vue', vuex: 'Vuex', 'vue-router': 'VueRouter', axios: 'axios', 'element-ui': 'ELEMENT'

二、vue-router使用懒加载

在访问到当前页面才会加载相关的资源,异步方式分模块加载文件,默认的文件名是随机的id。如果在output中配置了chunkFilename,可以在component中添加WebpackChunkName,是为了方便调试,在页面加载时候,会显示加载的对应文件名+hash值,如下图:

{ path: '/Login', name: 'Login', component: () = >import( /* webpackChunkName: "Login" */ '@/view/Login')}

三、图片资源的压缩,icon资源使用雪碧图

严格说来这一步不算在编码技术范围内,但是却对页面的加载速度影响很大。对于所有的图片文件,都可以在一个叫tinypng的网站上去压缩一下。网址:tinypng.com/,对页面上使用到的icon,可以使用在线字体图标,或者雪碧图,将众多小图标合并到同一张图上,用以减轻http请求压力。然后通过操作CSS的background属性,控制背景的位置以及大小,来展示需要的部分。

四、开启gizp压缩

gizp压缩是一种http请求优化方式,通过减少文件体积来提高加载速度。html、js、css文件甚至json数据都可以用它压缩,可以减小60%以上的体积。前端配置gzip压缩,并且服务端使用nginx开启gzip,用来减小网络传输的流量大小。

命令行执行:npm i compression-webpack-plugin -D

在webpack的dev开发配置文件中加入如下代码:

const CompressionWebpackPlugin = require('compression-webpack-plugin')plugins: [ new CompressionWebpackPlugin()

启用gzip压缩打包之后,会变成下面这样,自动生成gz包。目前大部分主流浏览器客户端都是支持gzip的,就算小部分非主流浏览器不支持也不用担心,不支持gzip格式文件的会默认访问源文件的,所以不要配置清除源文件。

配置好之后,打开浏览器访问线上,F12查看控制台,如果该文件资源的响应头里显示有Content-Encoding: gzip,表示浏览器支持并且启用了Gzip压缩的资源

五、webpack相关配置优化

(1)使用uglifyjs-webpack-plugin插件代替webpack自带UglifyJsPlugin插件来压缩JS文件;生产环境关闭源码映射,一方面能减少代码包的大小,另一方面也有利于系统代码安全;清除打印日志和debugger信息;配置SplitChunks 抽取公有代码,提升你的应用的性能

(2)使用mini-xss-extract-plugin提取CSS 到单独的文件, 并使用optimize-css-assets-webpack-plugin来压缩CSS文件 。

六、前端页面代码层面的优化

(1)合理使用v-if和v-show

(2)合理使用watch和computed

(3)使用v-for必须添加key, 最好为唯一id, 避免使用index, 且在同一个标签上,v-for不要和v-if同时使用

(4)定时器的销毁。可以在beforeDestroy()生命周期内执行销毁事件;也可以使用$once这个事件侦听器,在定义定时器事件的位置来清除定时器。详细见vue官网

最终优化后的效果如下图:vendor.js文件从1M以上优化到256K左右,体积减少接近80%,排除服务器影响的因素,界面渲染速度基本都在1s左右,达到秒开效果,比之前快了太多,体验一下就上来了嘻嘻。

这样的一般是服务器那边的问题,在选择服务器内存,贷款以及机房上面都需要进行评估,不是随随便便选择的内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • vue项目首屏加载时间优化实战
  • vue项目首屏打开速度慢的解决方法
  • vue服务端渲染实践之web应用首屏耗时最优化方案
  • 详解vue-cli 3.0 build包太大导致首屏过长的解决方案
  • vue-cli 首屏加载优化问题
  • 浅谈vue单页应用首屏加载速度优化方案
  • 浅谈vue首屏加载优化
  • vue-cli项目优化方法- 缩短首屏加载时间
  • vue项目使用cdn优化首屏加载问题
  • 浅谈vue初学之props的驼峰命名
  • 详解vue 在移动端体验上的优化解决方案
  • 详解关于表格合并span-method方法的补充(表格数据由后台动态返回
  • 写一个vue popup组件
  • vue.js 1.x与2.0中js实时监听input值的变化
  • 详解使用vuex进行菜单管理
  • vue引入jq插件的实例讲解
  • vue2.0.js的多级联动选择器实现方法
  • 详解在vue中使用typescript的一些思考(实践)
  • vue三层嵌套路由的示例代码
  • 做一个微信小程序视频播放类的,如何提升视频加载速度
  • 如何提高液晶拼接屏的加载速度
  • 如何提升网站加载速度
  • 如何提升网站加载速度
  • 如何提升网站加载速度
  • 如何提升大数据量页面的加载速度?
  • 如何提升网站加载速度
  • 如何提升网页加载速度
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全yui.ext相关prototypejqueryangularjsjsonlib_jsjs面向对象extjsmootoolsseajsdojovue.jsbackbone.js其它首页javascriptjavascript类库vue项目首屏加载时间优化实战vue项目首屏打开速度慢的解决方法vue服务端渲染实践之web应用首屏耗时最优化方案详解vue-cli 3.0 build包太大导致首屏过长的解决方案vue-cli 首屏加载优化问题浅谈vue单页应用首屏加载速度优化方案浅谈vue首屏加载优化vue-cli项目优化方法- 缩短首屏加载时间vue项目使用cdn优化首屏加载问题浅谈vue初学之props的驼峰命名详解vue 在移动端体验上的优化解决方案详解关于表格合并span-method方法的补充(表格数据由后台动态返回写一个vue popup组件vue.js 1.x与2.0中js实时监听input值的变化详解使用vuex进行菜单管理vue引入jq插件的实例讲解vue2.0.js的多级联动选择器实现方法详解在vue中使用typescript的一些思考(实践)vue三层嵌套路由的示例代码vue引用js文件的多种方式(推荐)简单理解vue中props属性vue之父子组件间通信实例讲解(prvue props用法详解(小结)vue元素的隐藏和显示(v-show指令vue.js常用指令汇总(v-if、v-fovue 进阶教程之v-model详解使用vue实现图片上传的三种方式vue.js实战之利用vue-router实现vue实现文件上传功能vue中使用ueditor富文本编辑器vue.js 嵌套循环、if判断、动态删除的实例3分钟了解vue数据劫持的原理实现通过npm引用的vue组件使用详解关于vue-cli 3配置打包优化要点(推荐)vue实现的双向数据绑定操作示例vue2.0 子组件改变props值,并向父组件传值浅谈vue中关于checkbox数据绑定v-model指使用vue实现简单计算器浅析前端路由简介以及vue-router实现原理
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved