layui.config的version配置仅对layui.use()加载的模块生效,需在引入layui.js后、use前调用,值须为非空字符串(如"20261002"),并与手动引入资源的?v=参数同步维护,二者缺一不可。

直接加版本号参数是最稳妥、最可控的解法,不依赖用户行为,也不破坏缓存机制本身。
layui.config 的 version 配置必须生效
这个配置只对通过 layui.use() 加载的模块起作用,且仅影响 layui.js 自动拼接的资源路径(比如扩展模块、base 目录下的 JS/CSS)。
- 确保
layui.config()在<script src="layui/layui.js"></script>之后、任何layui.use()之前调用 -
version值不能是空字符串或undefined,否则会被忽略;建议用时间戳或语义化版本,例如version: "20261002" - 如果用了
base路径,version会自动追加到所有从该路径加载的模块 URL 后,如base + 'xxx.js?v=20261002' - 注意:它不会影响你手动写的
或<script></script>标签,那些得单独处理
手动引入的 CSS/JS 必须自己加 ?v=xxx
像 layui.css、自定义主题、业务 JS 这类非 layui.use() 加载的资源,浏览器缓存完全由 HTML 中的 URL 决定。
- 写法必须是
,而不是(version属性无效) - 参数名用
v、version、t都可以,关键是值要随发布变更;开发时可用v=,生产环境建议固定为构建号或 Git commit hash - 如果用构建工具(如 Webpack/Vite),别手写,用插件自动注入,避免漏改
- 后端模板(如 Thymeleaf、JSP)可从配置读取版本变量,例如
th:src="@{/js/app.js(v=${jsVersion})}"
不要依赖 Cache-Control: no-cache 或 meta 标签
这类方案会让所有静态资源都失去强缓存,每次访问都发请求验证,既增加服务器压力,又拖慢首屏速度,和“既要缓存又要更新”的目标背道而驰。
-
对外部 JS/CSS 文件无效,只影响当前 HTML 文档 - 服务端设置
Cache-Control: no-store会彻底禁用缓存,上线后用户反而更卡 - 协商缓存(ETag / Last-Modified)在文件内容不变时仍可能返回 304,无法保证用户拿到最新版
- 真正需要的是“缓存键变更”,也就是 URL 变了——这是唯一被所有浏览器一致支持的方式
最容易被忽略的一点:Layui 的 layui.config({ version: ... }) 和手动 <script></script> 标签里的 ?v= 是两套独立机制,缺一不可。只配了前者,自定义 JS 还是走旧缓存;只改了后者,layui.use('table') 加载的模块可能还是老的。两者得同步维护。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











