ツイッターのOGPがトゥートに何らかのアクションをしないと表示されないのは仕様?
Conversation
Notices
-
sakasame@twiddon.com's status on Sunday, 23-May-2021 22:31:22 JST sakasame
-
のえる (noellabo@fedibird.com)'s status on Sunday, 23-May-2021 22:31:21 JST のえる
@sakasame 仕様ですね。
まず、投稿時点ではプレビューカードが生成されていません。バックグラウンドで生成されます。
んで、投稿にアクション、例えばお気に入りすると、サーバから最新の投稿データが返されてくるので、それをWebUIに反映すると、プレビューカードが投稿に追加されるという仕組みです。
もちろん、ブラウザのリロードで全部読み直しても反映されます。
-
のえる (noellabo@fedibird.com)'s status on Sunday, 23-May-2021 22:46:25 JST のえる
@sakasame では、ついでに理由も。
まず、投稿と同時にOGPを取得すると、応答時間がアクセス先の状況に左右され、投稿の処理が完了するのに時間がかかりすぎて、投稿そのものが失敗する可能性があります。投稿ボタンの反応が悪いのもストレスですよね。
また、OGPの取得は、リモートからやってきた投稿についても行われるのですが、これつまり、投稿したサーバのみならず配送されて届いたサーバ全てがほぼ同時に取得を行うことになってしまいます。
ちょっとしたDDoSみたいなもので、だいたいCDNをかましていないブログ等はこれで負荷が集中しすぎて落ちます。割と笑えない負荷です。
そこで、わざとランダムに遅延を入れています。完全な解決ではないですが、これでずいぶん軽減しています。
この遅延の分だけ、投稿への反映が遅れるようになっています。
つまり意図的に遅らせています。
-
sakasame@twiddon.com's status on Sunday, 23-May-2021 22:46:26 JST sakasame
@noellabo なるほど!Twitterの場合は投稿画面で既にOGPが動いているようだったんですが、Mastodonの場合はバックグラウンドで作動して生成しているのですね。ルールにTwitter,Pixiv等からの無断転載禁止を明記している関係で、OGPというものがあると知ってもらえれば少しはその代替になるかな?と思っていたので助かりました。あとでfavやBTに加えてリロードでも反映されることを周知してみようかと思います。ありがとうございました!
-
sakasame@twiddon.com's status on Sunday, 23-May-2021 22:56:58 JST sakasame
@noellabo あー、そういえば確かにTwitterでもたまに投稿時やその直後動作がもっさりする時がありますね…それはそういうことだったんですね。
言われてみれば確かに!その投稿が届いた複数の全サーバーかがOGPを叩きにかかると思うとちょっとゾッとしますね…。TwitterやYouTubeのような超大手ならいざ知らず、それで落ちてしまったら元も子もないですし、うかつにOGPを使えなくなってしまいますね。
…個人的にすごい知見なので、一連のやつBTしてもよろしいですか?
-
のえる (noellabo@fedibird.com)'s status on Sunday, 23-May-2021 22:56:58 JST のえる
@sakasame ダメなやつはprivateで投稿してますので(滅多にない)、そうじゃないやつはご自由にブーストどうぞ!
スクショが必要な時も、私の公開と未収載のものは断り無しで使ってかまいません。映り込んでいた時はうまく使ってやって下さい。
-
のえる (noellabo@fedibird.com)'s status on Sunday, 23-May-2021 23:13:57 JST のえる
@sakasame TwitterがOGPを取得する場合、Twitterは連合していないので、一回だけそのリソースにアクセスすれば済みます。この差は大きいよね。
ちなみに、同一サーバ内で最近取得されたプレビューカードは再利用されます。
Twitterの投稿URLなどでは該当することは比較的少ないですが、YouTubeの動画などは同じものを貼る人が結構いるので、体感できるかと思います。PixivのURLなんかもそうですね。
再利用される場合は、反映が極端に早いです。
プレビューカードはほっとくとかなりの容量を食うので、tootctlで削ったりします。Mastodonホスティングの場合はホスティング側で管理してくれるので気にしなくてOKです。
-