Odoo 10自定义模块开发:JS/CSS修改后缓存问题求助
解决Odoo 10自定义模块JS/CSS修改后需改文件名才生效的问题
嘿,我之前在Odoo开发过程中也踩过这个一模一样的缓存坑!明明改了代码,刷新页面却还是旧效果,非要改文件名才行,真的挺闹心的。给你分享几个亲测有效的解决方案,帮你摆脱改文件名的麻烦:
一、先搞定浏览器端缓存
有时候问题根本不在Odoo服务器,而是浏览器把旧的JS/CSS文件缓存起来了。试试强制刷新页面:
- Windows/Linux:按下
Ctrl + Shift + R - Mac:按下
Cmd + Shift + R
这个操作会强制浏览器忽略本地缓存,重新从服务器拉取最新的资源文件。
二、给资源加版本参数(最推荐的开发方式)
不用改文件名,只需要在引入资源的URL后面加一个版本参数就行。比如把你的代码里:
<link rel="stylesheet" href="/makeit/static/src/css/makeit.css"/> <script type="text/javascript" src="/makeit/static/src/js/custom_js_v93.js"></script>
改成:
<link rel="stylesheet" href="/makeit/static/src/css/makeit.css?v=1.1"/> <script type="text/javascript" src="/makeit/static/src/js/custom_js_v93.js?v=1.1"></script>
每次修改完代码后,把版本号(比如v=1.1)改成v=1.2,这样浏览器和Odoo都会认为这是一个全新的资源,直接加载最新版本,完美绕过缓存。
三、清除Odoo服务器端的资产缓存
Odoo会把静态资源打包合并成优化后的文件,这些打包文件也会存在服务器缓存里。可以这么操作:
- 开启Odoo开发者模式,进入「设置」->「技术」->「资产」
- 找到和你的
makeit模块相关的资产记录(比如makeit.assets_common对应的打包记录),删除这些记录 - 重新升级你的
makeit模块,Odoo会重新生成最新的打包资源
另外,如果你是在本地开发环境,启动Odoo的时候可以加--no-cache参数,直接禁用服务器端的资源缓存,开发时就不用频繁清缓存了:
./odoo-bin --addons-path=addons,../custom_addons --no-cache
四、确保正确升级模块
有时候你以为重新加载模块了,但其实只是重新安装,并没有触发资源的更新。一定要在开发者模式下找到你的makeit模块,点击「升级」按钮,而不是「安装」。升级操作会让Odoo重新解析你的view.xml文件,更新资源引入的配置。
为什么会出现这个问题?
本质上是Odoo和浏览器的双重缓存机制导致的:
- Odoo为了提升性能,会将静态资源合并、压缩后缓存起来
- 浏览器也会缓存静态文件,避免重复下载
修改代码后如果没有触发缓存失效,两者都会继续加载旧的资源文件,而修改文件名相当于改变了资源的URL,自然会绕过缓存,但这显然不是高效的开发方式。
内容的提问来源于stack exchange,提问作者sturo82
相关产品推荐
相关产品推荐

