안녕하세요,
최근 Discourse 2.5.0 버전 이후 썸네일 생성에 문제가 발생하고 있습니다.
썸네일이 이제 코어에서 생성되는 것 같으며, 이로 인해 모든 썸네일이 삭제되었습니다.
그들을 복원하기 위해 다양한 작업을 시도해 보았으며, 작동하지 않는 상황을 설명드리겠습니다.
참고: 이러한 변경에는 좋은 이유가 있을 수 있지만, 업그레이드 가이드나 해당 변경 사항을 선택적으로 적용할 수 있는 방법 없이 기능을 깨뜨리는 갑작스러운 동작 변경을 도입하는 것은 피해야 합니다. ![]()
배경
- Discourse 2.5.0 beta4 (faeb5793ba)
- Topic List Preview 플러그인 4.4.0
- WP-Discourse Posts가 Discourse 주제(첫 번째 메시지)에 게시됨 (전체 HTML).
게시물 콘텐츠에 대해, 다음은 예시입니다 (편의를 위해 포맷 적용):
Content
편의를 위해 이미지 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%9d%d7%99-xiaomi-re-2/"></a>
</small>
</p>
<br />
<p>נעים להכיר!</p>
Discourse 업데이트 이전
TLP는 주제 생성 또는 편집 시 외부 이미지에서 항상 잘 작동했습니다.
그러나 마크다운 문제로 인해 download remote images to local 옵션은 비활성화되어 있었습니다.
마크다운 렌더링 문제
이것은 주요 문제는 아니며, Discourse 업그레이드 후에도 여전히 발생합니다. 여기 설명이 있습니다.
Discourse가 이미지를 다운로드하고 이미지 HTML을 마크다운 문법으로 대체할 때 – 우리의 컨텍스트에서는 다음과 같은 결과가 나옵니다:
[...]<a href="<link_here>" target="_blank"></a>[...]
Discourse는 이미지를 렌더링할 수 없습니다.
Image

이 문제를 해결하려면 위에 최소한 빈 줄이 필요합니다:
[...]<a href="<link_here>" target="_blank">
</a>[...]
HTML로 둘러싸인 마크다운 이미지 렌더링을 허용할 수 있을까요?
Discourse 업데이트 이후
- 모든 썸네일이 삭제되었습니다.
- 모든 이미지는 주제 콘텐츠에 잘 표시됩니다.
- 이 기능(FEATURE: Include optimized thumbnails for topics (#9215) · discourse/discourse@03818e6 · GitHub, 저는 이렇게 생각합니다) 때문에, 외부 링크에서 썸네일을 가져오는 것이 더 이상 불가능해 보이는 것 같아
download remote images to local옵션을 활성화하도록 강제되었습니다.
download remote images max days old는 최대 값인 10000으로 설정되어 있습니다.
이로 인해 모든 게시물을 다시 베이킹(rebake)하여 이미지를 다운로드하도록 지시를 받았습니다. 그리고 여기서 이상한 일이 시작됩니다.
rake posts:rebake는 큰 효과가 없었습니다 (적어도 주제의 첫 번째 메시지에는 효과가 없었지만, 많은PullHotlinkedImages를 트리거했습니다).
1.1. 일부 주제를 살펴보니class또는srcset속성이 있는 이미지 HTML이 원인인 것 같아서, 다음 코드로 모든 이미지를 정규화(normalize)하려고 시도했습니다 (ruby를 잘 모름) – 일부 주제에는 도움이 되었습니다.
1.2. 그러나 마크다운 문제로 인해 수정을 위해 줄바꿈을 추가해야 했습니다. – 적어도 그 주제들에 대해서는 썸네일이 작동했습니다.
Code
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를 시도했습니다 – 효과 없음. - 그런 다음 위의 코드와 유사하지만 특정 주제 ID를 사용하고
post.rebake!만 사용하는 rails 콘솔을 시도했습니다 – 효과 없음 - 주제 내의 모든 이미지가 항상 다운로드되는 것은 아닙니다.
- @Canapin이 Download remote images from older posts? - #3 by vinothkannans 를 가리켜 주었습니다; 이제 모든 게시물을 다시 베이킹하려고 시도 중입니다. – 불행히도 도움이 되지 않았습니다
왜 어떤 이미지는 작동하고 다른 이미지는 작동하지 않는지 정말 미칠 것 같습니다. 기준 문제라고 생각하지 않습니다. 이미지 설정은 높게 되어 있습니다. 그 뒤에 있는 로직을 정말로 이해하지 못합니다. 이것은 무작위인 것처럼 보입니다.
현재 여전히 많은 수의 썸네일이 누락되어 있습니다. 아마도 대부분은 수동으로 편집/저장하여 수정할 수 있겠지만, 그것은 실현 가능하지 않습니다. 저는 클라이언트를 위해 이것을 수행하고 있으며, 이 문제를 해결하려고 시도하는 데 이미 많은 시간을 잃었습니다.
업로드된 이미지를 썸네일로 사용하는 것에 반대하지는 않지만:
- 이미지가 다운로드되지 않는 구체적인 이유가 있는지 알려주실 수 있나요? 도움이 될 수 있는 설정이 있나요? 우리가 무언가 필요한가요? 어떻게 디버깅해야 하나요?
- 콘솔을 통해 편집/저장처럼 다운로드를 강제하는 방법이 있나요?
- HTML로 둘러싸인 경우 마크다운 이미지 렌더링을 허용해 주실 수 있나요?
문제를 충분히 정확하게 설명했기를 바랍니다.
도움과 해결책에 대해 미리 감사드립니다.







(시스템이 이미지를 마크다운으로 대체)