完整 URL 在 assets erb 文件中——>多站点问题

阅读 UrlHelper.absolute 的当前实现:

看起来当 CDN 为 nil 时(这正是您的情况),它会通过拼接 Discourse.base_url_no_prefix 和参数来构建 URL。

所以问题在于,Discourse.base_url_no_prefix 在多站点环境中是否总是返回第一个主机?

查看代码 :eyes:

第 288 行变量名 current_hostname 强烈暗示它已考虑到多站点场景 :thinking:

再看这里:

看起来确实如此。目前看来是个死胡同…

再看看其他地方,这个路由之所以有特殊处理,是因为浏览器非常喜欢频繁访问它,而我们不能将其放到 CDN 上把问题甩给别人。在这样做的时候,我们曾遇到过涉及多站点泄露的 bug,该问题已在一年前由 @sam 修复:

是否存在这样一种可能性:您部署该多站点集群的方式以类似 2018 年初我们遇到的那种“泄露式”缓存方式缓存了这个路由?

2 个赞