当前位置: 首页 > news >正文

性能优化——首屏优化

🔹 1. 构建优化,减少资源体积

  • Webpack / Vite 配置压缩:使用 terser 压缩 JS,cssnano 压缩 CSS。

  • Tree Shaking:在 Vue/React 项目中确保使用 ESM,剔除无用代码。

  • 代码分割(按需加载)

    • 路由懒加载:const Home = () => import('@/views/Home.vue')
    • UI 组件库用 babel-plugin-importunplugin-vue-components,避免一次性打包全部。
    • 手动分包,将一些 ui 包/图表等包从主包拆分出去。

👉 实际效果:把主包从 2MB 压到 800KB,首屏 JS 下载和解析速度明显提升。


🔹 2. 静态资源优化

  • 图片优化

    • 构建阶段用 image-webpack-loadervite-imagemin 压缩图片。
    • PC 用 WebP/AVIF,移动端用合适尺寸的缩略图。
  • Icon 优化:用 SVG SpriteIconfont 替代几十个小 PNG。

👉 实际效果:首页 Banner 图从 500KB 压缩到 100KB,首屏渲染快了约 300ms。


🔹 3. 网络层优化

  • CDN 加速:静态资源(JS/CSS/图片)部署到 CDN,提高分发速度。

  • 缓存策略

    • 设置 Cache-Control: max-age=31536000, immutable 给带 hash 的静态文件。
    • 对 HTML 设置 no-cache,保证更新及时。
  • 预加载关键资源

    <link rel="preload" as="style" href="/css/main.css">
    <link rel="preload" as="script" href="/js/main.js">
    

👉 实际效果:全国不同地区访问首页资源响应时间缩短 100~300ms。


🔹 4. 首屏渲染优化

  • 骨架屏 / Loading 占位:用 Vue/React 插件或者自己写骨架屏,避免白屏。

  • 延迟加载非关键 JS

    <script src="chart.js" defer></script>
    

    或者在业务中用 import() 动态加载报表类库。

👉 实际效果:白屏时间从 2s 降到 1s,用户视觉上“更快”。


🔹 5. SSR / SSG / 预渲染

  • SSR(Nuxt、Next.js):服务端返回 HTML,客户端再激活交互。
  • Prerender(预渲染插件):对不频繁更新的页面,构建时生成静态 HTML。

👉 实际效果:首屏从“空白页面 + JS 渲染”变成“直出 HTML”,TTFB 降低 30%+。


🔹 6. 移动端专项优化

  • 图片懒加载

    <img v-lazy="imgUrl">
    
  • 减少大库:替换 moment.js → dayjs,lodash → lodash-es 按需引入。

  • 打包分析:用 webpack-bundle-analyzer 找出大依赖并优化。

👉 实际效果:首屏包体积缩小 200KB,弱网下加载快约 500ms。


✅ 简单总结

👉 “在实际开发中,我主要从几个方面做过首屏优化:

  1. 构建阶段:开启 Tree Shaking、代码分割,UI 库按需引入,把主包压到 1MB 以内;
  2. 静态资源:图片用 WebP 并压缩,Icon 改为 SVG Sprite,减少请求数;
  3. 网络层:静态资源走 CDN,设置强缓存和预加载关键资源;
  4. 渲染层:内联首屏 CSS,非核心 JS 延迟加载,同时加骨架屏,避免用户看到白屏;
  5. 特殊场景:数据量大的时候用 SSR 或预渲染,让首屏 HTML直出。

文章转载自:

http://rJQ4jYFg.qcwck.cn
http://sCTI5poT.qcwck.cn
http://BhfpkF9m.qcwck.cn
http://9Uw6tQxC.qcwck.cn
http://0DDBGVmm.qcwck.cn
http://qePXqe0v.qcwck.cn
http://xu7dWjyo.qcwck.cn
http://JFlelamV.qcwck.cn
http://CFg12TzG.qcwck.cn
http://EfesFJAW.qcwck.cn
http://VhAe7hvz.qcwck.cn
http://HAipdGQ3.qcwck.cn
http://I5LEwqSg.qcwck.cn
http://116RoxQO.qcwck.cn
http://qU1z5qma.qcwck.cn
http://htYLyhyU.qcwck.cn
http://183AIvFL.qcwck.cn
http://jUQDGkpJ.qcwck.cn
http://Tq6pwh6v.qcwck.cn
http://VNE7NpHQ.qcwck.cn
http://YVTLe5xC.qcwck.cn
http://G7np3LAo.qcwck.cn
http://4q3n2PsZ.qcwck.cn
http://iKendmXN.qcwck.cn
http://U286eib0.qcwck.cn
http://Cce31hDS.qcwck.cn
http://EiYWQqZA.qcwck.cn
http://QSwFQEJw.qcwck.cn
http://WkvC3BDW.qcwck.cn
http://EP6VHwY9.qcwck.cn
http://www.dtcms.com/a/371620.html

相关文章:

  • Linux网络设备驱动程序深度理解
  • Unity AssetBundle详解
  • 小白AIGC短视频生成的第一课之混元AI视频
  • 通义万相wan2.2视频模型的基础模型与安装应用详解
  • JavaEE 进阶第三期:开启前端入门之旅(三)
  • Linux:NTP服务
  • 【多模态学习】QA3:FFN的作用?Embedding生成方法的BERT和Word2Vec?非线性引入的作用?
  • Tomcat 日志文件名的命名规范
  • 基于单片机的可燃性气体泄漏智能报警系统
  • Ubuntu系统下Python连接国产KingbaseES数据库实现增删改查
  • 【linux kernel 常用数据结构和设计模式】【数据结构 2】【通过一个案例属性list、hlist、rbtree、xarray数据结构使用】
  • 论文阅读:DMD | Improved Distribution Matching Distillation for Fast Image Synthesis
  • 深入解析三色标记算法
  • Python struct模块 | 使用pack函数进行字节序打包
  • 二叉树的前中后序遍历(迭代法)
  • Camx-系统默认创建camxoverridesettings.txt
  • SQL面试题及详细答案150道(101-115) --- 数据操纵与定义篇
  • Adobe Premiere Pro(Pr)2022视频编辑软件安装教程与下载地址
  • 18.4 查看订单
  • 【考研C语言编程题】数组元素批量插入实现(含图示+三部曲拆解)
  • 九.弗洛伊德(Floyd)算法
  • pytorch非线性回归
  • Java 大视界 -- Java 大数据机器学习模型在金融市场风险评估与投资组合优化中的应用(407)
  • Python快速入门专业版(十一):布尔值与None:Python中的“真假”与“空值”(附逻辑判断案例)
  • 鸿蒙NEXT应用数据持久化全面解析:从用户首选项到分布式数据库
  • Linux笔记---封装套接字
  • 轻松Linux-8.动静态库的制作及原理
  • LeetCode 面试经典 150 题:移除元素(双指针思想优化解法详解)
  • 【TypeScript】闭包
  • 后端(fastAPI)学习笔记(CLASS 1):扩展基础