前端如何优化工程

文章目录

    • 使用CDN
      • 1. 请求定位:
      • 2.内容缓存:
      • 3.负载均衡:
      • 4.边缘计算:
    • 优化Webpack
      • 1.合理配置Loader:
      • 2.优化代码分割:
      • 3.压缩和优化输出文件:
      • 4.利用Tree Shaking:
      • 5.优化解析速度:
      • 6.利用多线程和并行处理:
      • 7.优化Dev Server性能:
      • 8.监控和分析构建性能:
      • 9.保持Webpack版本更新:
      • 10.自定义插件和扩展:
    • 优化代码
      • 1.防抖节流
      • 2.图片懒加载和预加载
      • 3.骨架屏
      • 4.减少定时器的使用以及及时删除定时器

使用CDN

cdn是通过互联网相互连接的电脑网络系统,通过确定用户地址,用离用户最近的服务器,传输声音,图片,视频等资源给用户。加快用户数据的响应。
原理:

1. 请求定位:

当用户发起请求时,CDN系统会根据用户的IP地址和DNS解析结果,将请求定位到距离用户最近的服务器节点。这种定位机制确保用户可以从最近的网络节点获取内容,从而大大减少传输延迟。

2.内容缓存:

CDN服务器节点会缓存用户请求的内容。当收到用户请求时,节点会首先检查是否已经缓存了该内容。如果内容已缓存,则直接返回给用户,避免了从源服务器获取内容的过程,从而大大提高了响应速度。
动态内容加速:对于动态生成的内容,CDN服务器会与源服务器建立连接,将用户请求转发给源服务器进行处理,并将处理结果缓存到CDN节点上。这样,对于后续的相同请求,CDN节点可以直接从缓存中提供内容,从而实现对动态内容的加速。

3.负载均衡:

CDN系统会自动监控各节点的负载情况。当某个CDN节点的负载过高或出现故障时,系统会自动将用户请求转发到其他可用节点上,确保用户始终获得最佳的访问体验。

4.边缘计算:

CDN节点不仅可以缓存内容,还可以部署计算资源,对内容进行实时加工处理,如图片压缩、视频转码等。这种边缘计算的方式进一步减少了传输的数据量和延迟。

优化Webpack

1.合理配置Loader:

根据项目需求,选择适当的Loader,并避免不必要的Loader。
利用include和exclude属性,指定Loader处理的文件范围,减少不必要的转换。
使用cache-loader或Webpack 5的持久化缓存功能,缓存Loader的转换结果,提高构建速度。

2.优化代码分割:

使用optimization.splitChunks进行代码分割,将公共代码提取到单独的文件中,实现代码的复用和懒加载。
利用动态导入(import())实现组件级别的代码分割,减少首屏加载时间。

3.压缩和优化输出文件:

使用TerserPlugin压缩JavaScript代码。
利用OptimizeCSSAssetsPlugin或cssnano压缩CSS代码。
通过compression-webpack-plugin对输出文件进行Gzip或Brotli压缩,减少文件大小和网络传输时间。

4.利用Tree Shaking:

确保项目中使用的库支持ES6模块语法,以便利用Tree Shaking功能去除未使用的代码。
在package.json中设置sideEffects属性,告知Webpack哪些文件具有副作用,以便更准确地去除未使用的代码。

5.优化解析速度:

通过配置resolve.modules和resolve.extensions,减少Webpack在解析模块时的搜索范围。
使用resolve.symlinks设置为false,避免解析符号链接,提高解析速度。

6.利用多线程和并行处理:

使用thread-loader或happypack将Loader的执行过程分散到多个子进程中,提高构建速度。
利用Webpack 5的持久化缓存和并行处理功能,进一步提高构建性能。

7.优化Dev Server性能:

配置Dev Server使用热模块替换(HMR),实现快速更新而不需要重新加载整个页面。
调整Dev Server的compress和hot选项,根据项目需求进行优化。

8.监控和分析构建性能:

使用Webpack Bundle Analyzer分析构建结果,找出可能的优化点。
监控构建过程中的性能瓶颈,针对瓶颈进行优化。

9.保持Webpack版本更新:

关注Webpack的更新日志和发布说明,及时将项目中的Webpack版本升级到最新版本,以便利用最新的优化和功能。

10.自定义插件和扩展:

如果需要,可以编写自定义的Webpack插件或扩展,针对特定需求进行性能优化。

优化代码

1.防抖节流

主要业务场景:1.防抖,输入框的检索功能,多次改变input的值,延迟时间不断刷新,最后一次调用接口。2.节流,滚动获取数据列表,再次的滚动请求接口,只有等待前面接口调用结束之后才可以。

2.图片懒加载和预加载

主要原理:
懒加载:img标签只有展示在可视区域才会加载图片。之前使用默认图片占位。
预加载:前端项目中的图片预加载是指在页面加载时,提前加载页面中需要使用的图片资源,并将它们缓存在浏览器中。这样,当用户需要查看这些图片时,就可以直接从缓存中获取,减少等待时间,提升用户体验。

3.骨架屏

骨架屏(Skeleton Screen)是一种前端技术,它在页面数据加载完成前,先给用户展示出页面的大致结构(通常是以灰色或其他颜色填充的占位图)。当接口数据加载完成后,这些占位图会被实际的内容所替换。骨架屏本质上是界面加载过程中的过渡效果,它可以在一定程度上降低用户的等待焦虑,使界面加载过程变得更加自然和流畅。

4.减少定时器的使用以及及时删除定时器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP Step by Step -- How to use pipeline

正如我们在摸鱼有一手:NLP step by step -- 了解Transformer中看到的那样,Transformers模型通常非常大。对于数以百万计到数千万计数十亿的参数,训练和部署这些模型是一项复杂的任务。此外,由于几乎每天都在发布新模型&#xff0c…

Linux系统网络---DNS域名解析服务

目录 一、DNS的简介 DNS系统的分布式数据结构👇 DNS系统类 两种查询方式 二.正向解析实验 1.先关闭防火墙、selinux 2.安装bind 3.查看配置、修改配置 4.修改区域配置文件 正向解析👇 反向解析👇 5.修改 正向解析&#x1f…

js音频指定扬声器

做音视频开发时候,看到阿里音视频能力,有这个功能,怀着好奇的心去搜索果然发现是有办法做到的,可能比较冷门平时用不到,记录下; const devices await navigator.mediaDevices.enumerateDevices(); const a…

6.Linux常用命令---文件目录管理(3)

6.37 read --读取标准输入命令 read内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入&#xff0c;当使用重定向时&#xff0c;可以读取文件中的一行数据。 read a < 123.txt #读取文件123.txt中的内容&#xff0c;保存到变量a中参数&#xff1a; -a&a…

python环境安装jupyter

1 前提条件&#xff1a;python环境 系统&#xff1a;win10 python&#xff1a;本地已经有python&#xff0c;可以查看本地的python版本&#xff1a; C:\Users\PC>python --version Python 3.8.10 2 安装jupyter并启动 安装jupyter C:\Users\PC>pip install jupyter …

Qt xml示范

1.数据格式 #ifndef XML_DATA_H #define XML_DATA_H#include<QWidget>struct Student {int s_id;QString s_name;double s_math_score;double s_english_score;}; struct Teacher{int t_id;QString t_name;QVector<Student> t_students_v; };#endif // XML_DATA_H…

笔试题-构建非二叉树,且非递归遍历-利用栈

普通版本 package com.fang.恒天软件;import java.util.*; import java.util.stream.Stream;public class Tree {TreeNode head;public Tree(TreeNode node) {this.head node;}class ForeachNoMethodException extends Exception {public ForeachNoMethodException(String me…

面试:JVM垃圾回收

一、三种垃圾回收算法 1、标记清除&#xff08;已废弃&#xff09; 找到根对象&#xff08;局部变量正在引用的对象、静态变量正在引用的对象&#xff09;&#xff1b;沿着根对象的引用链&#xff0c;查看当前的对象是否被根对象所引用&#xff0c;若被引用&#xff0c;则加上…

区块链 | OpenSea 相关论文:Toward Achieving Anonymous NFT Trading(一)

​ &#x1f951;原文&#xff1a; Toward Achieving Anonymous NFT Trading &#x1f951;写在前面&#xff1a; 本文对实体的介绍基于论文提出的方案&#xff0c;而非基于 OpenSea 实际采用的方案。 其实右图中的 Alice 也是用了代理的&#xff0c;不过作者没有画出来。 正文…

机器视觉检测为什么是工业生产的刚需?

机器视觉检测在工业生产中被视为刚需&#xff0c;主要是因为它具备以下几个关键优势&#xff1a; 提高精度与效率&#xff1a;机器视觉系统可以进行高速、高精度的检测。这对于保证产品质量、减少废品非常关键。例如&#xff0c;在生产线上&#xff0c;机器视觉可以迅速识别产品…

UEFI安全启动模式下安装Ubuntu的NVIDIA显卡驱动

UEFI安全启动模式下安装ubuntu的nvidia显卡驱动 实践设备&#xff1a;华硕FX-PRO&#xff08;NVIDIA GeForce GTX 960M&#xff09; 一、NVIDIA官网下载驱动 1.1在浏览器地址栏输入https://www.nvidia.cn/drivers/lookup/进入网站&#xff0c;接着手动驱动搜索&#xff0c;并…

The Clock and the Pizza [NeurIPS 2023 oral]

本篇文章发表于NeurIPS 2023 (oral)&#xff0c;作者来自于MIT。 文章链接&#xff1a;https://arxiv.org/abs/2306.17844 一、概述 目前&#xff0c;多模态大语言模型的出现为人工智能带来新一轮发展&#xff0c;相关理论也逐渐从纸面走向现实&#xff0c;影响着人们日常生活…

探讨mfc100u.dll丢失的解决方法,修复mfc100u.dll有效方法解析

mfc100u.dll丢失是一个比较常见的情况&#xff0c;由于你电脑的各种操作&#xff0c;是有可能引起dll文件的缺失的&#xff0c;而mfc100u.dll就是其中的一个重要的dll文件&#xff0c;它的确实严重的话是会导致程序打不开&#xff0c;系统错误的。今天我们就来给大家科普一下mf…

太速科技-多路PCIe的阵列计算全国产化服务器

多路PCIe的阵列计算全国产化服务器 多路PCIe的阵列计算全国产化服务器以国产化处理器&#xff08;海光、飞腾ARM、算能RSIC V&#xff09;为主板&#xff0c;扩展6-8路PCIe3.0X4计算卡&#xff1b; 计算卡为全国产化的AI处理卡&#xff08;瑞星微ARM&#xff0c;算能AI&#x…

【stm32】swjtu西南交大嵌入式实验三 外部中断实验:按键中断

实验内容&#xff1a; 1、编写程序&#xff0c;设置主程序&#xff1a;跑马灯以 0.2s 的速度旋转&#xff1b;将 KB1 设置为外部中断&#xff0c;下 降沿触发&#xff0c;按下 KB1 则全彩灯的 R 灯闪烁 5 次。编译、下载程序到开发板&#xff0c;观察实 验现象&#xff1b;按下…

阶跃星辰:探索智能科技的星辰大海

引言 在当今快速发展的科技时代&#xff0c;人工智能已经成为推动社会进步的重要力量。阶跃星辰&#xff0c;正是在这一背景下诞生的。 阶跃星辰是一家专注于通用人工智能探索的公司&#xff0c;成立于2023年4月。该公司的创始团队由一群对人工智能充满热情和渴望的人组成&am…

LM1875L-TB5-T 音频功率放大器 PDF中文资料_参数_引脚图

LM1875L-TB5-T 规格信息&#xff1a; 商品类型音频功率放大器 音频功率放大器的类型- 输出类型1-Channel (Mono) 作业电压16V ~ 60V 输出功率25W x 1 4Ω 额外特性过流保护,热保护 UTC LM1875是一款单片功率放大器&#xff0c;可为消费类音频应 用提供极低失真和高品质的…

物联网鸿蒙实训解决方案

一、建设背景 在数字化浪潮汹涌的时代&#xff0c;华为鸿蒙系统以其前瞻的技术视野和创新的开发理念&#xff0c;成为了引领行业发展的风向标。 据华为开发者大会2023&#xff08;HDC. Together&#xff09;公布的数据&#xff0c;鸿蒙生态系统展现出了强劲的发展动力&#x…

MongoDB的UTCDateTime如何使用

使用MongoDB的UTCDateTime类来存储当前的UTC日期和时间。UTCDateTime对象在MongoDB中表示一个日期&#xff0c;但是它不是PHP的DateTime类。如果你想把UTCDateTime对象格式化为可读的字符串需要先把UTCDateTime对象转换成PHP的DateTime类 方法 (new MongoDB\BSON\UTCDateTime…

【论文浅尝】Phi-3-mini:A Highly Capable Language Model Locally on Your Phone

Phi-3-mini phi-3-mini&#xff0c;一个3.8亿个参数的语言模型&#xff0c;训练了3.3万亿个token&#xff0c;其总体性能&#xff0c;通过学术基准和内部测试进行衡量&#xff0c;可以与Mixtral 8x7B和GPT-3.5等模型相媲美(在MMLU上达到69%&#xff0c;在MT-bench上达到8.38)&…