你好,
自 Discourse 2.5.0 最新版本发布以来,我在缩略图生成方面遇到了问题。
看起来缩略图现在由核心功能生成,这导致所有缩略图都被清空了。
我尝试了各种操作来恢复它们,下面我将解释在哪些情况下这些操作无效。
注意:这次变更可能有很好的理由,但引入突然的行为变更从而破坏现有功能,且没有提供升级指南或 opting-in 机制,这确实令人难以接受。请考虑这一点。![]()
上下文
- Discourse 2.5.0 beta4 (faeb5793ba)
- Topic List Preview 插件 4.4.0
- WP-Discourse 帖子以完整 HTML 形式发布在 Discourse 主题中(第一条消息)。
关于帖子内容,这是一个示例(已为您格式化):
内容
为方便起见,以下是图片的 HTML 代码:
<img
width="150"
height="84"
src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg"
class="attachment-thumbnail size-thumbnail"
alt=""
srcset="
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg 150w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-300x169.jpg 300w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-1200x675.jpg 1200w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-1536x864.jpg 1536w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-2048x1152.jpg 2048w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-788x443.jpg 788w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית.jpg 1280w
"
sizes="(max-width: 150px) 100vw, 150px"
/>
<div data-wp>
<a
href="https://www.banggood.com/Xiaomi-Redmi-Router-AC2100-2033Mbps-2_4G-5G-Dual-Band-Wireless-Router-6High-Gain-Antennas-128MB-OpenWRT-WiFi-Router-p-1614038.html"
target="_blank"
><img src="https://zuzu.deals/wp-content/uploads/2020/01/5e3128b4e5da7-150x150.jpg"/>
</a>
<div>
<div data-buy>
<a
href="https://www.banggood.com/Xiaomi-Redmi-Router-AC2100-2033Mbps-2_4G-5G-Dual-Band-Wireless-Router-6High-Gain-Antennas-128MB-OpenWRT-WiFi-Router-p-1614038.html"
target="_blank">קנייה
</a>
<span data-clipboard-text="BG38b2ac" data-coupon>BG38b2ac</span><i></i>
</div>
<div data-price>$43.99</div>
</div>
</div>
<hr />
<p>
<small>
פורסם ב: <a href="https://zuzu.deals/%d7%a7%d7%95%d7%a4%d7%95%d7%9f-%d7%91%d7%9c%d7%a2%d7%93%d7%99-%d7%a8%d7%90%d7%95%d7%98%d7%a8-%d7%97%d7%96%d7%a7-%d7%95%d7%97%d7%93%d7%a9-%d7%a9%d7%9c-%d7%a9%d7%99%d7%90%d7%95%d7%9e%d7%99-xiaomi-re-2/"></a>
</small>
</p>
<br />
<p>נעים להכיר!</p>
在 Discourse 更新之前
TLP 在我们的外部图片上一直工作正常,无论是在创建主题还是编辑主题时。
然而,由于 Markdown 问题,我们禁用了下载远程图片到本地选项。
Markdown 渲染问题
这不是主要问题,但在 Discourse 升级后仍然发生,以下是解释。
当 Discourse 下载并用其 Markdown 语法替换图片 HTML 时——在我们的上下文中,结果如下:
[...]<a href="<link_here>" target="_blank"></a>[...]
Discourse 无法渲染该图片
图片

要修复此问题,您需要在上方至少添加一个空行:
[...]<a href="<link_here>" target="_blank">
</a>[...]
能否允许渲染被 HTML 包围的 Markdown 图片呢?
在 Discourse 更新之后
- 所有缩略图都被删除了。
- 所有图片在主题内容中都能正常显示。
- 由于此功能(https://github.com/discourse/discourse/commit/03818e642a1ae871bffdc0c39c10f05f0b8b0398,我想),我们被迫启用`下载远程图片到本地`选项,因为似乎无法再从外部链接获取缩略图了…

下载远程图片最大天数设置为最大值 10000。
据此,有人建议我重新烘焙所有帖子以下载图片。问题就在这里变得奇怪了。
rake posts:rebake效果不大(至少在主题的第一条消息上如此,但它确实触发了大量PullHotlinkedImages)
1.1. 查看一些主题后,我认为带有class或srcset属性的图片 HTML 是原因,所以我尝试用以下代码规范化所有图片(我不懂 Ruby)—— 这对某些主题有所帮助。
1.2. 然而,由于 Markdown 问题,我不得不添加换行符来修复。—— 至少对于这些主题,缩略图可以正常工作了。
代码
Post.where(post_number: 1)
.where("raw LIKE '%<img%/>%'")
.each
do |post|
post.raw.gsub!(/<img[^>]+(src="[^"]+")[^>]+\/>/, "<img \\1 />")
post.save!(validate: true)
post.rebake!
end
Post
.where(post_number: 1)
.where("raw LIKE '%upload://%'").each
do |post|
post.raw.gsub!(/(!\[.*upload:\/\/.*\))/, "\n\n\\1")
post.save!(validate: false);
post.rebake!
end
- 手动编辑(不更改内容,仅保存)被忽略的主题通常有效。图片会被下载。
2.1. 有些主题即使编辑后仍被忽略。我可以看到PullHotlinkedImages被触发,但没有下载任何图片。(例如使用此 HTML<img src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg" />,链接) - 在规范化之后,看到编辑可以帮助下载图片,我尝试多次运行
rake posts:rebake—— 没有效果。 - 然后我尝试使用 Rails 控制台,类似于上面的代码,但使用特定主题 ID,并且仅执行
post.rebake!—— 没有效果。 - 并非主题中的所有图片都能被下载。
- @Canapin 指向 Download remote images from older posts? - #3 by vinothkannans 不幸的是没有帮助。
有些图片能工作,有些不能,这简直令人疯狂。我认为这不是标准问题。图片设置很高。我真的不明白背后的逻辑是什么,这看起来很随机。
目前,我们仍然有很多缺失的缩略图。可能大多数可以通过手动编辑/保存来修复,但这不可行。我正在为一个客户做这件事,而且我已经浪费了很多时间试图解决这个问题。
我不介意使用上传图片作为缩略图,但是:
- 您能告诉我图片无法下载是否有特定原因吗?有哪些设置可以帮助?我们需要什么?如何调试?
- 是否有一种方法可以通过控制台强制下载它们,类似于编辑/保存?
- 能否允许被 HTML 包围的 Markdown 图片渲染?
希望我对问题的描述足够准确。
提前感谢任何帮助和解决方案。







(系统用 Markdown 替换了图片)