Tengo un sitio NuxtJS con solo una página /pages/matrix/index.vue pero muchas rutas dinámicas que apuntan a esta página, cada ruta usa el mismo conjunto de datos. Al generar una compilación estática para la implementación en Netlify, la carpeta dist alcanza actualmente ~1.2 GB, que consta de
.html en dist/matrix (ocupando ~39% del espacio)payload.js en dist/_nuxt/static/[random]/matrix/ en subcarpetas para rutas (ocupando ~61% del espacio) Ese 61% son 3125 copias de un payload.js de payload.js con exactamente el mismo conjunto de data: [{}] , mientras que solo cambia la ruta:
__NUXT_JSONP__("/matrix/place2/time3,time14,time29", (function(a, b, ...) { return { data: [{ /* data does not change */ }], fetch: {}, mutations: void 0 } }("nor", "does", "this")));Me pregunto si hay una manera de reducir esta redundancia extrayendo de alguna manera la parte de datos. Reducir ~665 MB a solo 220 kB suena atractivo.
Las rutas son /matrix , /matrix/place1 o /matrix/place8/time1,time7,time18 . Al generar, extraigo todos los datos de un CMS sin encabezado y los paso al componente de mi página a través de la opción de carga útil . Primero, utilicé el enrutamiento del sistema de archivos e importé las pages/matrix/index.vue de esta manera:
// pages/matrix/_places/index.vue <script> import Index from '../index' export default Index </script> que se sintió mal pero funcionó. Culpé a este enfoque de la "duplicación" de esos archivos de carga útil (francamente, sin comprender completamente la mecánica de la generación estática). Ahora cambié a extendRoutes con esta configuración nuxt.config.js :
router: { extendRoutes (routes, resolve) { routes.push( { name: 'matrix-place-times', path: '/matrix/:place/:times', component: resolve(__dirname, 'pages/matrix/index.vue') }, { name: 'matrix-place', path: '/matrix/:place', component: resolve(__dirname, 'pages/matrix/index.vue') } ) } } La cantidad de archivos de carga útil repartidos en las subcarpetas de ruta sigue siendo la misma.
¿Algún consejo sobre esto? Usando Nuxt v2.15.7.
Pocas cosas en las que puedo pensar: