layui.cache是Layui全局轻量级缓存对象,供开发者手动读写,与table.cache等模块私有缓存无关;默认为空对象,需主动赋值才有效,如layui.cache.userInfo或通过layui.config().extend注册模块路径。

直接打印 layui.cache 对象即可查看当前所有缓存项
layui.cache 是 Layui 内部预留的轻量级全局缓存区,不是只给模块用的“私有空间”,而是开发者可读写的共享对象。它默认为空对象,你手动挂上去什么,就能看到什么。
常见内容包括:layui.cache['vue'](通过 layui.config().extend 注册的模块路径)、layui.cache['auth']、自定义业务键如 layui.cache['userInfo'] 等。Layui 自身不会往里面塞表格数据或组件实例——那些归 table.cache、layer.cache 管。
执行以下代码就能完整看到当前页面所有缓存项:
console.log(layui.cache);
layui.cache 和 table.cache 完全无关,别混用
这是最容易踩的坑:名字像,但归属不同、用途不同、生命周期也不同。
-
layui.cache是全局命名空间,由layui.config({ extend: {...} })或你手动赋值驱动,比如layui.cache.myData = [...] -
table.cache是layui.table模块私有的数据缓存对象,结构为{ 'yourTableId': [...] },只存渲染过的原始数据行,和layui.cache没有任何引用关系 - 试图用
layui.cache['test']去拿表格数据?一定为空;反过来,往table.cache里写东西也不会出现在layui.cache里
为什么 console.log(layui.cache) 有时看起来是空的
因为没人往里写过东西。Layui 不会自动填充 layui.cache,它只是留了个“抽屉”给你用。如果你没调过 layui.config().extend,也没手动赋值,那它就是个空对象 {}。
检查是否真的有内容,可以这样验证:
layui.config({
extend: { auth: 'auth/authModule' }
});
console.log(layui.cache.auth); // → 'auth/authModule'
注意:extend 中的模块名不能和原生模块重名(如 form、layer),否则会静默覆盖,且不报错。
调试时怎么快速确认某个缓存键是否存在且有效
不要只看 console.log(layui.cache) 的展开结果——浏览器控制台可能延迟显示动态属性,尤其当你在模块加载后才赋值时。
更可靠的方式是直接访问并判断:
if (layui.cache && layui.cache.userInfo) {
console.log('用户信息已缓存:', layui.cache.userInfo);
} else {
console.warn('layui.cache.userInfo 未设置');
}
另外,layui.cache 是可被压缩工具误删的(如果没显式引用),所以生产环境建议统一入口处初始化一个标记,比如 layui.cache._initialized = true,方便排查是否整个 cache 区域被清空过。


















