Я пытаюсь улучшить время загрузки своего веб-сайта, и для этого я использую следующие настройки в моем vue.config.js
:
config.output.chunkFilename(`js/[name].[chunkhash:8].js`)
config.optimization
.runtimeChunk('single')
.splitChunks({
chunks: 'all',
maxInitialRequests: Infinity,
minSize: 0,
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name (module) {
// get the name. E.g. node_modules/packageName/not/this/part.js
// or node_modules/packageName
const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
// npm package names are URL-safe, but some servers don't like @ symbols
return `npm.${packageName.replace('@', '')}`
}
}
}
})
Кроме того, я также загружаю все свои маршруты динамически:
router. js
const LandingPage = () => import(/* webpackChunkName: "view-landing-page" */ '@C/landing-page')
const HomePage = () => import(/* webpackChunkName: "view-home-page" */ '@C/home-page')
const Room = () => import(/* webpackChunkName: "view-room" */ '@C/room')
const router = new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'landingPage',
component: LandingPage
},
{
path: '/land',
name: 'landingPage',
component: LandingPage
},
{
path: '/home',
name: 'homePage',
component: HomePage
},
{
path: '/*',
name: 'roomPage',
component: Room
}
]
})
Каждое из этих представлений также использует компоненты с отложенной загрузкой. Например:
номер. vue
export default {
name: 'room',
mixins: [SocketEventsMixin],
components: {
'video-element': () => import(/* webpackChunkName: "video-element" */ '@RC/media/video-element'),
'video-chat': () => import(/* webpackChunkName: "video-chat" */ '@RC/communications/video-chat'),
}
}
Однако даже при всем этом я вижу в своем index.html
следующее:
...
<link href=/css/view-room.1ce954c7.css rel=prefetch>
<link href=/js/view-room.fe2de329.js rel=prefetch>
...
<link href=/css/video-element.8342e42f.css rel=prefetch>
<link href=/js/video-element.ab0e6cca.js rel=prefetch>
...
В результате при посещении целевой страницы загружается колоссальные 4,5 МБ, для чего не требуется любых этих ресурсов.
Как убедиться, что index.html
содержит только минимальные скрипты / CSS, а все остальное загружается динамически? Что заставляет актив быть включен в index.html
, а не динамически загружаться? Что я делаю не так?