リモートメディアみたいに、Mastodonの古いプレビューカードを消して、必要に応じて再ダウンロードするっていうやつができないかなあと色々検討してたら、結局自分にはちゃんと理解できてないから手が出せないと分かって落胆した

現状、プレビューカードはLinkCrawlWorkerというワーカーが走ることで非同期に生成されている。このワーカーが走るタイミングは、

1. 自鯖で新しいステータスがポストされた時
2. 他鯖からActivityPubでCreateがフェデレートされてきた時

スレッドを表示

なので、この時作られたプレビューカードを一回削除してしまうと、もう再生成されることはない

スレッドを表示

そこで、どこか他のタイミングで必要に応じてLinkCrawlWorkerを走らせたら、削除された古いカードも再生成してくれるだろうと思ったのだが

スレッドを表示

さてその適切なタイミングを探すことが自分にはできなかった

スレッドを表示

StatusSerializerとかPreviewCardSerializerのどっかで走らせたらどうかと思ったんだけど、ただソースの途中で無闇にそういう命令を突っ込んじゃうと、大変お行儀が悪いんではないかと思われる

スレッドを表示

@hanage999 ワーカー走らせるのは簡単だけど、タイミングだね。

基本的に、ユーザーがコンテンツを参照しにいくタイミングを隠蔽するためにキャッシュしているので、適切な場所はtootctlかもしれん。

@noellabo 古いやつの削除じゃなくて、再生成をtootctlでやるということですか?

@hanage999 Yes.

ただ、必要に応じてダウンロードしたいんだよね?w

@noellabo それですそれです。自分にそういう処理を追加する技術がないのと同時に、そういうこと自体がFediverseの外に対して行儀が悪いのかもしれない、という心配もある

フォロー

@hanage999 もう、古くて削除されているプレビューカードの取得の場合、考え方を変えて、リアルタイムに取りに行っちゃった方がいいかもしれないね。

プレビューカードの取得APIで取りに行っちゃう。

あるいは、TLの取得で指定された範囲に、WorkerをガシガシKickしちゃう。

@noellabo あー、古いものならDDoSまがいのことになる恐れもないってことですかね。カードの取得APIはFetchLinkCardServiceでしたっけ。

TLの取得されたタイミングか……また勉強しないと

@hanage999 どちらかというと、自分トコの鯖への攻撃が捗るというかw

もともと遡りTL取得が重いので、そこに一度にプレビューカード取得が入ってくるとさらに重くなるよね。まぁ人が少なければどうということもないので、気にしなくていいと思うけど。

@noellabo 重いですね。メディアの再取得で特に(レートリミットがかかるけど)。

そういうことを総合的に考えて、ま、プレビューカードは再利用もされるし、消さないで置いといてもいいんじゃない?という感じになってるんじゃないかと思うんですけど……気にしなくても大丈夫かなあ

@hanage999 私なら、詳細表示画面にだけ表示します。TLの方はやめておくw

@noellabo あ、それだ!それで十分ですね。ありがとうございます!

ログインして会話に参加
DTP-Mstdn.jp

DTP-Mstdn.jpは、DTP・デザイン・印刷に関わる人々のためのMastodonインスタンスです。特定分野の専門インスタンスですので、日々のつぶやき、耳寄りな情報の共有、ディスカッション、質問とその回答、役立つスクリプトなど、他では投稿しづらい内容も、思う存分トゥートしましょう!