马可家的菠萝 2024-01-29 21:13 采纳率: 0%
浏览 11
已结题

为什么前端拆包后性能降低了?

在测试vue3项目的性能优化时,我对monaco进行拆包后,发现页面反而更慢了!
这是我的测试路由:

import { createRouter, createWebHashHistory, createWebHistory, RouteRecordRaw } from 'vue-router'

const routes: Array<RouteRecordRaw> = [
    {
        path: '/',
        name: 'index',
        meta: {
            title: '首页',
            keepAlive: true,
            requireAuth: true
        },
        component: () => import('@/components/index.vue')
    },
    {
        path: '/MonacoJosn',
        name: 'MonacoJosn',
        meta: {
            title: 'MonacoJosn'
        },
        component: () => import('@/components/MonacoJosn.vue')
    }
]

const router = createRouter({
    history: createWebHashHistory(),
    routes
})
export default router

MonacoJosn.vue文件引入了monaco编辑器,但是因为使用了懒加载,访问路由"/"时,并不会加载monaco的东西,页面加载详情如下:

img


很快,然后我测试了一下拆包,在vite中配置了:

 build: {
        rollupOptions: {
            output: {
                dir: 'D:/nginx-1.25.3/html/dist',
                manualChunks: (e) => {
                    if (e.includes('/node_modules/monaco-editor/')) return 'monaco'
                }
            }
        }
    },

重新加载页面发现每次访问路径“/”时都会加载monaco的相关文件,不知道为什么,请各位赐教。

img

  • 写回答

11条回答 默认 最新

  • 百锦再@新空间代码工作室 全栈领域优质创作者 2024-01-30 00:38
    关注

    微信GPT协助作答
    我来负责帮你筛选

    拆包可以提高页面加载速度,但在某些情况下,拆包可能导致页面反而变慢。以下是可能导致这种情况的一些常见原因和解决方法:

    1. 拆分过细:如果你将所有相关的资源全部拆分为单独的包,可能会导致过多的HTTP请求,从而增加了页面加载时间。在拆包过程中,可以尝试找到合适的分界点,避免拆分得过细,以减少请求数量。

    2. 加载顺序问题:在拆包后,确保正确地管理和控制资源的加载顺序。如果资源的加载顺序不正确,可能会导致页面的延迟和阻塞。确保按需加载资源,并根据依赖关系进行正确的加载。

    3. 缓存问题:拆包后,资源的缓存策略可能需要重新评估。浏览器的缓存机制对于减少页面加载时间非常重要。确保合理设置资源的缓存头,以便浏览器能够正确缓存和重新使用这些资源。

    4. 代码合并和压缩:在拆包过程中,确保对拆分的资源进行适当的代码合并和压缩。通过减少资源大小和精简代码逻辑,可以进一步提高页面加载速度。

    5. 性能优化:检查页面中可能存在的其他性能问题,并针对性地进行优化。例如,减少请求的资源大小、使用懒加载等。

    综上所述,拆包可以提高页面加载速度,但需要注意避免上述常见问题。建议仔细审查代码,在遵循最佳实践的基础上进行合理的拆包和性能优化。如仍有问题,可以进一步分析页面加载过程,并利用开发者工具寻找性能瓶颈或咨询前端开发专家。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月30日
  • 赞助了问题酬金15元 1月29日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物