前端如何优化工程

server/2024/9/25 8:04:38/

文章目录

    • 使用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.ppmy.cn/server/16647.html

相关文章

jvm知识点总结(二)

Java8默认使用的垃圾收集器是什么? Java8版本的Hotspot JVM,默认情况下使用的是并行垃圾收集器(Parallel GC) 如果CPU使用率飙升,如何排查? 1.先通过top定位到消耗最高的进程id 2.执行top -h pid单独监控该进程 3.在2中输入H&#xff…

使用Python进行自然语言处理:情感分析

使用Python进行自然语言处理的热门应用:情感分析 自然语言处理(NLP)是人工智能领域中的一个重要分支,它致力于使计算机能够理解、解释和生成人类语言。在NLP的诸多应用中,情感分析是一项备受关注的热门应用之一。情感分析(Sentiment Analysis)是通过分析文本中的情感色…

【Go语言】接口类型(一)接口类型与接口的值

本文是介绍golang接口类型的第一篇,主要介绍接口类型与接口类型的值的相关概念。 1. 静态类型、动态类型、动态值 所谓的静态类型(即 static type),就是变量声明的时候的类型。 var age int // int 是静态类型 var name strin…

Vuforia AR篇(三)— AR模型出场效果

目录 前言一、AR模型出场二、AR出场特效三、添加过渡效果四、效果 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、AR模型出场 创建ARCamer…

「案例分享」DevExpress XAF (WinForms UI)赋能医疗管理系统,让操作更自动化!

DevExpress XAF是一款强大的现代应用程序框架,它采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 获取DevExpress 新版正式版下载(Q技术交流&#xff1a…

Spring Boot集成Redisson实现延迟队列

项目场景: 在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内…

C++之AVL树的使用以及原理详解

1.AVL树 1.1AVL树的概念 1.2AVL树的定义 1.3AVL树的插入 1.4AVL树的旋转 1. 右单旋 2. 左单旋 3. 左右双旋 4. 右左双旋 1.5AVL树的验证 1.6AVL的实现 在之前对map/multimap/set/multiset进行了简单的介绍(C之map_set的使用-CSDN博客),…

【计算机网络】成功解决 ARP项添加失败:请求的操作需要提升

最近在用Wireshark做实验时候,需要清空本机ARP表和DNS缓存,所以在cmd窗口输入以下命令, 结果发生了错误:ARP项添加失败:请求的操作需要提升 一开始我还以为是操作的命令升级了,但是后面发现其实只是给的权…