Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

URLプレビューの動作改善+動作設定を可能にする #13569

Closed
1 task done
samunohito opened this issue Mar 13, 2024 · 0 comments · Fixed by #13579
Closed
1 task done

URLプレビューの動作改善+動作設定を可能にする #13569

samunohito opened this issue Mar 13, 2024 · 0 comments · Fixed by #13579
Assignees
Labels
✨Feature This adds/improves/enhances a feature packages/backend Server side specific issue/PR

Comments

@samunohito
Copy link
Member

samunohito commented Mar 13, 2024

Summary

MisskeyのURLプレビュー取得機能に対し、下記の強化処置を施したいです。
(あとで misskey-dev/summaly 側にもissueを建てますが、本体側も対応が必要なのでissueを用意しておきたい)

1. プレビュー対象のContent-Lengthの上限をコンパネから設定できるようにする

プレビュー対象のContent-Lengthの上限を misskey-dev/summary のパラメータとして取れるようにし、Misskey本体のコントロールパネルからこの設定値を設定できるようにします。
また、Content-Lengthを返してこないサーバのプレビュー生成を拒否するオプションも同時に提供します。

現在の misskey-dev/summary の実装には外部から上限を設定できるようなインターフェースは無く、決め打ちの値が使用されています(サイズは10MBまで)。
上限が設けられているとはいえ、リンク先が大きければ大きいほど負担になります。なので、これを制御できるようにしたいです。

2. HEADメソッドによるヘッダの検証を先に行い、合格した場合のみGETでbodyを取るようにする

GETメソッドでbodyを取る前に、HEADメソッドでレスポンスヘッダの検証を行い、条件に合わない場合はプレビューの生成を行わないようにします。

現在の misskey-dev/summary の実装は、URLの先をGETで取得してからヘッダ内容の判定などを行っています 1
GETメソッドによりbodyまで取得されているため、音声ファイルや動画ファイルなどのメディアやPDFなどの巨大なファイルのリンクが貼られた時にサーバ負荷を高めてしまっているようです。
サマリープロキシを使えばMisskey本体のdownは回避出来ますが…マシンリソースを消費することには変わりないので、実装したい機能です(プロキシ側に取り込めば恩恵もあると思うので)

Purpose

  • URLを貼られた時のプレビュー生成によるマシンリソースの圧迫を軽減できる可能性がある
  • misskey-dev/summaryを使用しているサマリープロキシ実装側にも恩恵がある

Do you want to implement this feature yourself?

  • Yes, I will implement this by myself and send a pull request

Footnotes

  1. 実際にブレークポイントを置き、MP3ファイルを取得するテストを書いて試しました。
    該当ソースはこのへん

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨Feature This adds/improves/enhances a feature packages/backend Server side specific issue/PR
Projects
No open projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant