咨询热线:15911225507
龙霄
登录
首页-所有文章-Nuxt.js,Vue.js-正文

Pinia 状态持久化与内存治理实践

龙霄龙霄
Nuxt.js, Vue.js
1个月前
1
1
3.59K
本文系统介绍大型 Nuxt 4 项目中 25 个 Pinia Store 的状态管理架构,深入分析 shallowRef 内存优化、localStorage 持久化白名单策略、路由级 KeepAlive 控制,以及配套的 memory profiling 工具链。
大型 Nuxt 4 项目中 Pinia Store 的内存管理、持久化策略和路由级 KeepAlive 控制的完整方案

一、项目 Store 体系概览

本项目使用 25 个独立的 Pinia Store,按职责分为四大类:

类别Store说明
内容类PostStore, ArchiveStore, SearchStore, DocumentStore, VideoStore文章/页面/归档/搜索/文档/视频
用户类LoginStore, UserCenterStore, AnswerStore, BookmarkStore, CommentStore登录/用户中心/问答/收藏/评论
业务类CartStore, ShopStore, ProductStore, OrderStore, PayStore购物车/商城/产品/订单/支付
系统类GeneralStore, HeaderStore, BuilderStore, EventStore通用配置/头部/构建器/事件

二、Pinia 持久化配置

// nuxt.config.ts
modules: [
    ['@pinia/nuxt', { autoImports: ['defineStore', 'storeToRefs', 'acceptHMRUpdate'] }],
    'pinia-plugin-persistedstate/nuxt'
]

piniaPluginPersistedstate: {
    cookieOptions: { sameSite: 'strict', secure: process.env.NODE_ENV !== 'development' },
    storage: 'localStorage',
    debug: process.env.NODE_ENV === 'development'
}

Store 级持久化

export const useCartStore = defineStore('cart', () => {
    const items = ref([])
}, {
    persist: { key: 'salong_cart', storage: localStorage, paths: ['items'] }
})

持久化白名单原则

Store持久化字段不持久化字段理由
CartStoreitemsloading, error购物车需跨会话
LoginStoretoken, userloading保持登录状态
GeneralStoreoptions, themenotifications用户偏好
SearchStore-results, query无需持久化

三、shallowRef 内存优化

// ❌ ref 递归将整个对象树转换为响应式
const posts = ref<Post[]>([])

// ✅ shallowRef 只追踪数组引用变化
const posts = shallowRef<Post[]>([])

存储 100 篇文章(每篇约 5KB):

  • ref:递归追踪 ~500KB 数据 → ~2MB 额外内存
  • shallowRef:只追踪引用 → ~8KB 额外内存

四、路由级 KeepAlive

// middleware/keepalive.global.ts
const KEEPALIVE_MAX = 12

const keepaliveExcludeRules = [
    /^\\/builder(?:\\/|$)/,
    /^\\/login(?:\\/|$)/,
    /^\\/cart(?:\\/|$)/,
    /^\\/oauth(?:\\/|$)/,
    // ...
]

export default defineNuxtRouteMiddleware((to) => {
    if (shouldKeepAlive(to.path)) {
        to.meta.keepalive = { max: KEEPALIVE_MAX }
    }
})
路由KeepAlive理由
首页 /✅ 缓存高频访问
内容详情 .html✅ 缓存保持滚动位置
构建器 /builder❌ 不缓存编辑态需实时
购物车 /cart❌ 不缓存数据实时性

五、内存治理工具链

pnpm memory:test    # 单元测试(缓存预算、请求韧性、页面活跃度)
pnpm memory:profile # --expose-gc 内存分析
pnpm memory:load    # 压力测试
pnpm memory:analyze # 日志分析

六、总结

层级机制控制参数
Store 级shallowRef 避免深层响应式大数组/大对象用 shallowRef
持久化级paths 白名单 + localStorage只持久化关键字段
路由级KeepAlive max=12 + 排除规则高频页面缓存
缓存级LRU 预算控制500 条 / 32MB 上限
标签:
本文原创,作者:龙霄,其版权均为龙霄所有。如需转载,请注明出处:https://lx.yfdxs.com/1428.html
龙霄

龙霄

Lv1Vip2Rec2
以 Nuxt.js 之力,焕新 WordPress 体验
121.94M3413.98W1W
加载中…
分享:
1
Nuxt 4 国际化 i18n 架构与多语言路由策略
Nuxt 4 国际化 i18n 架构与多语言路由策略上一篇
Nuxt 4 中 Naive UI 集成与 UnoCSS 原子化样式实战下一篇
Nuxt 4 中 Naive UI 集成与 UnoCSS 原子化样式实战
相关文章
总数:13
龙霄主题-电商与会员一体化产品插件:让内容变现从[能卖]到[卖得好]

龙霄主题-电商与会员一体化产品插件:让内容变现从[能卖]到[卖得好]

一套完整的电商交易链路,配合多级会员权限体系——从商品展示、购物车、优惠券到订单支付,从免费试读到VIP专属内容,用系统化的商业工具把你的知…
龙霄龙霄
Nuxt.js, WordPress
29天前
1
0
4.57K
0
Nitro 服务端架构:安全代理层与性能引擎深度解析

Nitro 服务端架构:安全代理层与性能引擎深度解析

这道隐形的「围墙」将WordPress后端完全隔离在公网之外,同时通过多层缓存、请求去重和智能重试,为前端提供稳定、高效、安全的数据服务。…
龙霄龙霄
Nuxt.js
1个月前
0
0
2.70K
0
Nuxt 4 国际化 i18n 架构与多语言路由策略

Nuxt 4 国际化 i18n 架构与多语言路由策略

本文完整呈现基于@nuxtjs/i18nv10的三语言(zh-CN/zh-TW/en)国际化方案,从prefix_except_defa…
龙霄龙霄
Nuxt.js, Vue.js
1个月前
0
0
3.23K
0
龙霄主题-商城系统:课程、产品、活动三大插件的统一交易引擎

龙霄主题-商城系统:课程、产品、活动三大插件的统一交易引擎

一套底层交易链路,三类商品形态,统一购物车、合并结算、集中订单管理——商用电商商城系统将课程插件、实体产品插件、营销活动插件的核心能力深度整合,…
龙霄龙霄
Nuxt.js
28天前
0
0
2.63K
0
龙霄主题四个小怪兽守护的登录:趣味交互动效设计深度解析

龙霄主题四个小怪兽守护的登录:趣味交互动效设计深度解析

当你输入密码时,它们会偷看;当你移动鼠标时,它们会歪头跟随——这不是游戏,而是一个Nuxt4项目的登录页面。四个彩色「小怪兽」让登录从枯燥…
龙霄龙霄
Nuxt.js, Vue.js
1个月前
0
0
3.88K
0
龙霄主题-可视化页面构建器:一个人、一个下午,搭建专业级网站

龙霄主题-可视化页面构建器:一个人、一个下午,搭建专业级网站

告别写代码、调样式、接API的传统建站模式。拖拽模块、配置参数、一键发布——让页面构建器成为你的效率杠杆,用十分之一的时间,交付十倍品质的网…
龙霄龙霄
Nuxt.js, WordPress
29天前
0
0
2.48K
0
Nuxt.js页面构建器:一个模块,构建万千网站

Nuxt.js页面构建器:一个模块,构建万千网站

深入解析Nuxt4可视化页面构建器的设计哲学——从拖拽式模块编排、全设备实时预览到数据导入导出,一套工具满足企业官网、电商平台、教育课程、…
龙霄龙霄
Nuxt.js, Vue.js
1个月前
0
0
3.09K
0
Nuxt.js + WordPress 架构:性能、速度、安全与缓存的全方位解析

Nuxt.js + WordPress 架构:性能、速度、安全与缓存的全方位解析

当Nuxt.js的现代化前端工程能力遇上WordPress强大的内容管理生态,两者通过Headless架构结合,打造出一套兼顾极致性…
大理旅行大理旅行
Nuxt.js, WordPress
29天前
1
1
7.92K
1
Nuxt 4 中 Naive UI 集成与 UnoCSS 原子化样式实战

Nuxt 4 中 Naive UI 集成与 UnoCSS 原子化样式实战

本文详解如何在Nuxt4项目中高效集成NaiveUI组件库与UnoCSS原子化CSS引擎,涵盖自动导入配置、SSR样式收集…
龙霄龙霄
Nuxt.js, Vue.js
1个月前
0
0
3.05K
1
龙霄主题-知识付费课程插件:核心功能与学习粘性提升策略

龙霄主题-知识付费课程插件:核心功能与学习粘性提升策略

在知识经济时代,如何将专业知识转化为可持续的在线课程产品?本文深入解析基于Nuxt.js+WordPress架构的知识付费课程插件,从核…
龙霄龙霄
Nuxt.js, WordPress
29天前
0
0
2.75K
0
拥抱现代Web开发:Nuxt.js + WordPress 架构革新指南

拥抱现代Web开发:Nuxt.js + WordPress 架构革新指南

一、性能优化:静态生成与动态渲染的完美平衡在当今快节奏的数字时代,网站性能直接关系到用户体验和业务转化。传统的WordPress主题开发…
龙霄龙霄
Nuxt.js, WordPress
1个月前
0
0
4.74K
0
Nuxt 4 + WordPress GraphQL:数据管理策略与性能优化深度指南

Nuxt 4 + WordPress GraphQL:数据管理策略与性能优化深度指南

本文深入剖析基于Nuxt4+WordPressGraphQL的生产级数据层架构,从服务端SHA-256缓存代理、飞行中请求去重、…
大理旅行大理旅行
Nuxt.js, Vue.js, WordPress
1个月前
1
1
6.80K
8
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
龙霄
没有相关内容