Odoo 15网页URL参数获取异常:更换ID仍返回旧值咨询
问题排查与解决思路
优先排查Nginx缓存问题
- 检查Nginx配置里是否对
/website_reference_form路径启用了proxy_cache这类缓存规则。如果Nginx缓存了首次请求的页面,后续带不同id的请求会直接返回缓存内容,根本不会转发给Odoo,自然拿不到新ID。 - 验证方式:临时注释Nginx的缓存配置,重启服务后测试不同ID的请求。如果能正常获取新ID,就说明是Nginx缓存策略的问题,需要调整——要么对带
id参数的请求禁用缓存,要么把id加入缓存键的组成部分,避免不同ID的请求共用缓存。
再排查Odoo自身的缓存设置
- 控制器缓存:检查自定义控制器的路由配置,确保没有设置不合理的缓存参数。比如你的路由应该显式关闭缓存:
如果路由带了@http.route('/website_reference_form', type='http', auth="public", website=True, cache=False) def reference_form(self, **kwargs): record_id = request.params.get('id') # 后续业务逻辑cache=True或者没指定(部分场景下Odoo会默认缓存),就会导致页面被缓存,无法获取新的id参数。 - 视图缓存:如果是用Odoo自带的网站视图,进入开发者模式检查视图的缓存属性,确认没有开启不必要的视图缓存。
- 浏览器缓存排除:用无痕窗口或者强制刷新(Ctrl+F5)测试,排除浏览器本地缓存的干扰——不过这种情况概率较低,因为URL参数变化后,正常浏览器不会复用旧缓存。
快速定位步骤
- 先用无痕模式+强制刷新,排除浏览器缓存的影响。
- 临时关闭Nginx缓存测试,恢复正常则是Nginx问题;若仍异常,再排查Odoo的控制器和视图缓存配置。
内容的提问来源于stack exchange,提问作者Reynaldo Ramirez
相关产品推荐
相关产品推荐

