webApp优化心得

2023-05-16

webapp性能优化

本文中提到的app前端采用的技术栈是Vue全家桶+原生js

http请求优化:

场景1
当用户操作过快时,页面之间跳转时间缩短,在网络状态不可控的情况下,有可能造成在B页面中提示A页面的消息。
优化方案:在跳转页面的时候,对现有的且已经不需要的ajax请求进行abort操作;详细步骤如下:
1. 全局存储ajax:每次发送ajax请求时,返回一个xhr对象,然后将其存储在vuex中。vuex:commit('mutationName',xhr对象)
2. 清除上一个页面中的ajax:在全局路由守卫beforeEach 中,触发clearXhrArr action清除所有的xhr对象,这样一来整个系统中,始终只存在与本页面相关的ajax。
ps:当某个ajax请求需要全局存在或者下一个页面依赖于前一个页面的ajax请求的时候,需要在步骤1存储xhr对象的时候设置标志位,表示该请求不应被清除。

场景2
用户重复点击按钮,重复发送ajax请求从后台获取数据,造成服务器资源的浪费:
优化方案:序列化请求的参数组合成字符串,以该字符串为key标识一个ajax请求,并存储,当发送一个ajax请求时,首先检查该请求是否已存在,如果是,则不再重复发送。
详细步骤:
1. 定义对象存储提交的ajax;

var pendingRequests = {}
//形成一个key唯一标识一个ajax请求。
var generatePendingRequestKey = function (opts) {
   var url = opts.url;
   var type = opts.type;
   var data = JOSN.stringify(opts.data);
   var str = url + type;
   if (data) {
       str += data;
   }
   return str;
 }

2 . 在ajax的ajaxBeforeSend函数中,添加以下代码校验该请求是否已经存在;

var key = generatePendingRequestKey(settings); //settings为ajax请求的参数
if(!pendingRequests[key]){
  pendingRequests[key] = xhr;
}else{
  xhr.abort();
  xhr.aborType = 1; //1:终止重复请求
}

3 . 在ajax的ajaxComplete函数中,添加以下代码,删除请求完成的ajax

var key = generatePendingRequestKey(settings);//settings为ajax请求的参数
delete pendingRequests[key]; //删除对应的属性

异步加载组件:

使用webpack打包时,通过import引入的组件默认会打包在app.js中,如果所有的组件都打包在一个js文件中,那么会导致js文件过大,首屏加载速度缓慢,严重影响用户体验,因此需要引入异步模块加载;如下代码:

const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

通过这种方式引入的组件会打包在一个名为chunk名称+hash的js的文件中,这样就可以减少首屏加载时间,优化用户体验;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webApp优化心得 的相关文章

随机推荐

  • Shell函数(函数定义、函数变量、函数调用、函数传参、函数返回值、获取函数返回值)

    分享知识 传递快乐 1 函数定义 linux shell 可以用户定义函数 xff0c 然后在shell脚本中可以随便调用 Shell 函数定义的语法格式如下 xff1a function funname 函数体 return int 格式
  • 产生死锁的必要条件

    死锁 指两个或两个以上的进程在执行过程中 xff0c 因争夺资源而造成的一种互相等待的现象 xff0c 若无外力作用 xff0c 它们都将无法推进下去 此时称系统处于死锁状态或系统产生了死锁 xff0c 这些永远在互相等竺的进程称为死锁进程
  • Proxifier设置代理上网详细操作

    分享知识 传递快乐 Proxifier配置上网代理 Proxifier 是一款功能非常强大的socks5客户端 xff0c 可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链 支持Xp xff0c Vista
  • NVIDIA Jetson系列刷机篇(2)之快速恢复

    在填坑NVIDIA Jetson系列开发版时难免有对系统环境造成严重污染的情况 xff0c 这时就要重新刷机了 拿起Jetson4下载刷机镜像解压等等 xff0c 安装依赖漫长的操作耗费一天就过去了 下面接上篇在刷完NVIDIA的主机器 u
  • 暴力推导 Beta 函数与 Gamma 函数关系式

    B x y 61 x y x 43 y 其中 x 61 43 0 e t t x 1 d t B x y 61 1 0 t x 1 1 t y 1 d t
  • 用PyQt5写了个音乐播放器

    首先先展示一下界面 xff08 不美观但好用 xff09 除了不能看歌词功能该有的都有 xff0c 作为本地播放器还挺好用的 xff0c 界面是用PyQt5做的 下面是源代码 xff1a span class token keyword i
  • STM32F4无人机动力旋翼拉力测试

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目的 了解无人机电调 电机转速 旋翼拉力与油门给定信号之间的关系 xff0c 可以通过相关设备进行拉力测试 实验原理 飞机旋翼绕旋翼旋转轴旋转时 xff0c 每个叶片的工作类同
  • STM32F4无人机6轴运动处理组件MPU6050

    目的 学习MPU6050的原理 MPU6050初始化方法 原理 MPU6050是9轴运动处理传感器 它集成了3轴MEMS陀螺仪 xff0c 3轴MEMS加速度计 xff0c 以及一个可扩展的数字运动处理器DMP xff08 Digital
  • 基于STM32F030驱动BMP180气压传感器

    目的 了解气压传感器 BMP180 的驱动原理 xff0c 通过配置 STM32F030 的GPIO及 IIC通信时序 xff0c 采集气压传感器 BMP180的值 原理 在测量海拔高度时 xff0c 传统的做法是通过测量某一高度的大气压力
  • 10G大文件上传最全方案:秒传、断点续传、分片上传,包教会!

    上一篇 xff1a 麻了 xff01 Fastjson 再曝反序列化漏洞 前言 文件上传是一个老生常谈的话题了 xff0c 在文件相对比较小的情况下 xff0c 可以直接把文件转化为字节流上传到服务器 xff0c 但在文件比较大的情况下 x
  • vscode运行C/C++程序

    一 vsocde对C C 43 43 的支持 Visual Studio Code对C C 43 43 语言的支持由Microsoft C C 43 43 扩展程序提供 它使得C C 43 43 在Windows Linux和macOS等跨
  • KEIL下载键变灰色,ST-link无法下载程序

    昨天在调试板子时 xff0c ST LINK下载还是好好的 xff0c 今天开始调试程序 xff0c 突然发现 xff0c KEIL的下载键变成了灰色 xff0c 无法下载 xff0c 如下 xff1a 后面仔细核对了KEIL的设置 xff
  • C++编程中常遇到的问题

    1 路径中不能存在空格 2 for等循环结构中 xff0c 如果判断条件的变量是size t或者unsigned时 xff0c 最好不要采用 i 来递减变量 xff0c 因为这两种类型没有负数 3 引用的引用不可用 xff1a int am
  • keil 采用 makefile 实现编译

    1 说明 由于keil 软件需要收费 xff0c 故有许多公司或者个人希望能够使用makefile 实现编译功能 如此一来 xff0c 就可以脱离了keil 公司的限制 xff0c 自由开发 2 开发环境 xff08 1 xff09 win
  • ROS常用消息

    1 sensor msgs sensor msgs是存储传感器常用消息数据message的包 xff0c 提供各种消息数据message的转换方法并定义了常用传感器使用的消息类型message xff0c 如相机 激光扫描测距仪等 xff1
  • .net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃

    目标 在一个网站内 xff0c 用一套proto即提供gPRC 调用 xff0c 又提供 Web API 调用 实现方法 根据微软官方James Newton King xff08 Newtonsoft json 作者 xff09 的文章
  • 滑模控制程序及Simulink仿真

    最近在看论文 xff0c 不太懂滑模控制是个什么东西 xff0c 便开始学习 使用了这篇文章的代码进行实现 https blog csdn net sinat 38887014 article details 103115218 不过这篇文
  • 飞行器设计大作业

    防空导弹主级燃料相对质量因数计算 问题描述 问题解答 详细实验报告及代码见链接 xff1a 飞行器设计大作业 MATLAB运行结果如下图所示
  • c++编程时为什么老是出现cout未定义

    include lt iostream gt using namespace std 加上这句 cout输出流类声明和定义都在iostream之中 对于非标准C 43 43 而言是iostream h 其名字位于std空间 xff0c 对于
  • webApp优化心得

    webapp性能优化 本文中提到的app前端采用的技术栈是Vue全家桶 43 原生js http请求优化 xff1a 场景1 xff1a 当用户操作过快时 xff0c 页面之间跳转时间缩短 xff0c 在网络状态不可控的情况下 xff0c