首屏加载优化总结

一、什么是首屏加载

  • 首屏时间(First Contentful Paint,FCP) :浏览器从输入网址到 首屏内容渲染完成 的时间。
  • 不需要整个网页都渲染完,但首屏区域必须显示内容。
  • 重要性:是衡量用户体验最关键的性能指标之一。

计算方式

  1. 监听 DOMContentLoaded

    javascript 复制代码
    document.addEventListener('DOMContentLoaded', () => {
        console.log('first contentful painting');
    });
  2. Performance API

    ini 复制代码
    performance.getEntriesByName("first-contentful-paint")[0].startTime;

二、加载慢的常见原因

  1. 网络延时(跨域/弱网环境)
  2. 资源体积过大(JS、CSS、图片)
  3. 资源重复请求(缓存缺失,依赖打包不合理)
  4. JS 脚本阻塞渲染(未使用 async/defer)

三、常见优化方案

1. 减小入口文件体积

  • 路由懒加载:拆分路由对应组件,按需加载

    css 复制代码
    routes:[ 
        {
          path: 'Blogs',
          component: () => import('./components/ShowBlogs.vue')
        }
    ]

2. 静态资源缓存

  • HTTP 缓存Cache-ControlEtagLast-Modified
  • Service Worker:离线缓存
  • localStorage:存储部分数据

3. UI 框架按需引入

  • 避免全量引入 UI 库,改为按需加载组件

    css 复制代码
    import { Button, Input, Pagination } from 'element-ui';
    Vue.use(Button).use(Input).use(Pagination);

4. 公共依赖抽取

  • 使用 webpack SplitChunksminChunks

    arduino 复制代码
    minChunks: 3 // 使用 3 次以上抽取为公共依赖

5. 图片优化

  • 图片压缩(tinypng、image-webpack-loader)
  • 使用字体图标/雪碧图
  • 优先考虑 WebP 格式

6. 开启 GZip 压缩

  • 前端构建时使用 compression-webpack-plugin

  • 服务端启用 gzip(express 示例):

    php 复制代码
    const compression = require('compression')
    app.use(compression())

7. 使用 SSR

  • SSR(服务端渲染) :服务器直接返回 HTML
  • Vue 推荐 Nuxt.js 实现 SSR,显著提升首屏速度

四、优化整体思路

  • 资源加载优化:拆分入口、缓存、压缩、依赖抽取、GZip
  • 页面渲染优化:SSR、懒加载、UI 框架按需加载、减少阻塞

五、参考资料


🤖 AI 生成提示:本文由 AI 模型自动生成并整理,仅供学习与参考。

相关推荐
阳火锅14 分钟前
Element / AntD 官方都没做好的功能,被这个开源小插件搞定了!
前端·vue.js·面试
大阳光男孩14 分钟前
Uniapp+Vue3树形选择器
前端·javascript·uni-app
沙振宇20 分钟前
【Web】使用Vue3+PlayCanvas开发3D游戏(九)纹理视觉效果
前端·游戏·3d·纹理
前端 贾公子21 分钟前
uniapp中@input修改input内容不生效 | 过滤赋值无效 | 连续非法字符不更新的问题
开发语言·前端·javascript
写不来代码的草莓熊25 分钟前
el-date-picker ,自定义输入数字自动转换显示yyyy-mm-dd HH:mm:ss格式 【仅双日历 datetimerange专用】
开发语言·前端·javascript
绺年26 分钟前
关于 mac 使用ssh配置
前端
LDX前端校草26 分钟前
verdaccio数据迁移
前端
炸炸鱼.40 分钟前
LVS-DR 群集部署
前端·chrome·lvs
Ava的硅谷新视界43 分钟前
TypeScript 中用判别联合类型替代 instanceof 检查
前端·javascript·typescript
ZC跨境爬虫1 小时前
海南大学交友平台开发实战 day9(头像上传存入 SQLite+BLOB 存储 + 前后端联调避坑全记录)
前端·数据库·python·sqlite