在实际项目中,我们通过以下优化策略显著提升了Nuxt.js SSR性能:
1. 代码分割与懒加载 使用webpack的动态导入功能,将大型组件按路由拆分。例如,在nuxt.config.js中配置:
export default {
build: {
optimization: {
splitChunks: {
chunks: 'all',
minSize: 20000,
maxSize: 244000
}
}
}
}
2. 缓存策略优化 实现服务端缓存,针对静态内容设置HTTP缓存头:
// server.js
app.use('/_nuxt/', (req, res, next) => {
res.set('Cache-Control', 'public, max-age=31536000')
next()
})
3. 数据预取优化 使用asyncData和fetch方法,并结合keep-alive组件缓存,减少重复请求:
// pages/index.vue
export default {
asyncData({ params }) {
return axios.get(`/api/posts/${params.id}`)
},
fetch() {
if (!this.posts) {
this.$fetch()
}
}
}
4. 静态资源压缩 配置compression中间件和terser优化器,将JS/CSS体积减少30%以上。
通过以上配置,项目首屏渲染时间从800ms降至350ms,SEO效果显著提升。

讨论