码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端性能优化


    前端主要是交互,那么其优化是为了响应更快,展示更快

    1.做(三省):懒

    能不能不做?

    不变的:减少渲染+缓存静态资源;

    如果要做,能不能拖延?

    紧急缓慢/万一不用做了

    增改的:

    延迟非必要+预处理必要;

    拖不下去的时候,能不能少做?

    少做:压缩体积,多路复用

    2.能否更快更好

    SEO搜索引擎优化_搜索引擎seo中keywords-CSDN博客

    3.预防

    前端内存分析、优化、检测泄露-CSDN博客

    目录

    不变:不做

    React.memo

    缓存

    使用 CDN(内容分发网络):托管全球分布的 CDN 服务器

    拖延

    组件动态导入import

    React:lazy懒加载、Suspense组件包裹异步组件

    ()=>import():路由懒加载

    少做

    资源压缩

    长列表滚动优化

    自适应防抖、监听元素尺寸变化


    不变:不做

    静态资源

    React.memo

    缓存

    使用 CDN(内容分发网络):托管全球分布的 CDN 服务器

    1. 就近访问: 当用户请求访问某个静态资源时,CDN 会自动将用户请求路由到离用户最近的边缘服务器。这样可以减少网络延迟,提高资源的加载速度。

    2. 负载均衡: CDN 使用负载均衡算法确保各个边缘服务器之间的负载均衡,避免某个服务器过载,提高整体性能。

    拖延

    类似“即时编译”(Just-In-Time Compilation, JIT):

    广泛应用于现代解释型语言,

    如 Java 的 JVM(Java Virtual Machine)和 JavaScript 的 V8 引擎。

    JIT 编译器会将经常执行的代码编译,提高程序运行的性能。

    组件动态导入import

    React:lazy懒加载、Suspense组件包裹异步组件

    1. 返回一个懒加载组件包装器,内部包含一个动态 import() 函数。

    2. 当应用程序首次渲染时,懒加载组件包装器会被渲染为一个空占位符,而不会立即加载真正的组件代码。

    3. 当应用程序运行到需要渲染懒加载组件的代码时,动态 import() 函数才会被触发,开始异步加载实际的组件代码。这个过程是非阻塞的,所以应用程序可以继续进行其他操作。

    4. 一旦组件代码加载完成,React.lazy 会自动渲染实际的组件内容,替换之前的占位符。

    1. import React, { Suspense, lazy } from 'react';
    2. const LazyComponent = lazy(() => import('./LazyComponent'));
    3. function App() {
    4. return (
    5. <Suspense fallback={<div>Loading...div>}>
    6. <LazyComponent />
    7. Suspense>
    8. );
    9. }

    OtherComponent 只有在其首次需要渲染时才会被加载,

    组件加载期间,用户将看到 "Loading..." 消息

    ()=>import():路由懒加载

    通过import()的方式导入,webpack在打包时会单独将它列为一个块,

    当符合判断条件时才会尝试去加载这个文件。

    1. const RouterView = () => import('./components/RouterView.vue');
    2. const router = new VueRouter({
    3. routes: [
    4. { path: '/path', component: RouterView }
    5. ]
    6. });

    少做

    资源压缩

    长列表滚动优化

    自适应防抖、监听元素尺寸变化

  • 相关阅读:
    【每日随笔】驾驭人性 ③ ( 胡萝卜 - 用利益让员工离不开你 | 大棒 - 用规则让员工害怕你 | 如何建立制度规则 )
    【博学谷学习记录】超强总结,用心分享|架构师-手写rpc
    linux解压文件命令
    基于Linux的Spark安装与环境配置
    二次剩余【模下开方】奇波拉算法
    Leetcode 2895. Minimum Processing Time
    社区团购小程序开发
    面试常问CAS和ABA问题,你懂了吗?
    Spark调度底层执行原理详解(第35天)
    实战模拟│微信 JSSDK 实现自定义分享、手机选图拍照、图片音频处理、地理位置、摇一摇等功能
  • 原文地址:https://blog.csdn.net/qq_28838891/article/details/137745928
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号