Discourse の新しいクライアントサイド画像最適化

約5年前、クライアントサイドの画像最適化を導入し、ユーザーがサイトの制限を超える画像をアップロードできるようにしました。これにより、ユーザーのアップロード帯域幅を節約し、コミュニティのストレージスペースを節約するとともに、Discourse 内での画像体験全体をよりスムーズにしました。

これをベースに、今後の変更という新しいシステムが導入され、この機能にいくつかの新機能が追加されました。

GIF → アニメーション WEBP への変換

大規模な GIF の変換は、長らく 私たちの 関心事項 に含まれており、現在はアニメーション WebP へ変換されるようになりました。これにより、元のファイルの約半分のサイズになります。

1ueX9IP
(2.5MB GIF → 1MB WEBP)

output
(10.1MB GIF → 4.8MB WEBP、サイズ制限によりデフォルトでは Discourse で許可されません)

HEIC 変換

2020 年にサーバーサイド変換を通じて HEIC のサポートを追加しましたが、現在はコンポーザー内で直接処理できるようになり、投稿前に変換結果をユーザーが確認できます。クライアントサイドで何らかの問題が発生した場合に備え、サーバーサイド変換もフォールバックとして引き続き機能します。


(3.4MB HEIC → 650KB JPG)

JXL 変換

ブラウザの JXL サポートは準備が整っていませんが、ユーザーは JXL ファイルを Discourse にアップロードし、自動的に JPG へ変換されるため、すべてのユーザーが画像を確認できます。


(1.1MB JXL → 930KB JPG)

「いいね!」 38

効率化のための最適化、素晴らしいですね!しかし、JXL や HEIC の変換、特に PNG の変換・圧縮において、WebP の活用をもっと進めないのはなぜでしょうか?AVIF を提案したくもありますが、WebP とは異なり、私の知る限り、まだ広くサポートされているとは言い難いようです。

透明性を持つ HEIC および JXL は、すでに JPG ではなく WebP に変換されています。常に WebP を使用することも検討しましたが、その場合、管理者が動作を微調整できるよう無数のサイト設定を追加する必要があり、それがためらいの要因となりました。

同様です。

理想的には、クライアント側とサーバー側の両方で画像圧縮を制御できる設定を管理者に提供し、かつ適切なデフォルト値を維持しつつ、Telegram や WhatsApp が行っているように、作曲モーダルアップロードオプションを通じてエンドユーザーが圧縮をその場で無効化できるようにしたいと考えています。しかし、社内にはそのような作業への意欲がありません。

「いいね!」 6