Onebox について少し気になる点の一つは、Onebox のコンテンツが投稿内にキャッシュされ、投稿が編集されるまでフィールドを変更しても更新されないことです。
例えば、あるアカウントから Onebox を作成し、一週間後にユーザーが自己紹介文を変更した場合……
Onebox について少し気になる点の一つは、Onebox のコンテンツが投稿内にキャッシュされ、投稿が編集されるまでフィールドを変更しても更新されないことです。
例えば、あるアカウントから Onebox を作成し、一週間後にユーザーが自己紹介文を変更した場合……
ページを閲覧するたびにOneboxを再ダウンロードすると、処理がかなり遅くなります。変更されていないOneboxを再ダウンロードするのは無意味です。変更があったかどうかを判別する方法がないため、レンチを使用するか編集してポストを再構築させるのが最適です。特定のカテゴリで定期的に更新したいOneboxが含まれる可能性が高いとわかっている場合は、そのカテゴリのトピックを毎日再構築するようなプラグインを作成することも可能です。
一般的に、ワンボックスは外部サイトのスクレイピングをローカルで制限し、BANされないようにするためにキャッシュされます!(もちろん、キャッシュにはパフォーマンス上のメリットもあります!)稀にキャッシュを回避する必要がある場合は、リンクの末尾に以下のようなダミーのクエリ文字列を追加するだけです。
?myname=isbill
これでリフレッシュが実行されます。
外部コンテンツに対するワンボックスのキャッシュは絶対に必要であり、その更新は想定されていません。私が言及したのは内部のワンボックスです。前述の例で述べた通り、ユーザーが作成したワンボックスは、人物の経歴書を変更することで、すべてのサイトで更新されることが期待されています。
また、内部コンテンツに対するワンボックスのキャッシュは負荷を軽減するために必要ですが、内部のワンボックスをどこかへインデックスし、ソースレコードが変更された場合に更新タスクをスケジュールすることも問題ないかもしれません。
現在の状況では、Discourse がワンボックスのフォーマット(内部ケースの場合)を更新しても、古い投稿では同じパターンで表示され続けます。この問題は、ワンボックスの内容を JSON として投稿にキャッシュし、クライアント側でフォーマットすることで解決されます。
私のサイトには Onebox サポートを実装しているのですが、投稿を編集しても Onebox キャッシュが更新されません。また、レンチメニューに「再構築」オプションも表示されていません。
ただし、ダミーのクエリ文字列を追加すると動作しますが、元の URL に戻るとキャッシュされたバージョンが表示されてしまいます。
見落としている設定や裏技はありますか?
使用バージョン:Discourse 2.5.5
注意してください。サイトの手前にCDNをプロキシとして使用し、プロキシ内でキャッシュ層を有効にすると、問題が発生する場合があります。CDNをプロキシとして使用している場合(Cloudflareなど)、一度無効にしてから、再度問題を確認してください。
私はCDNには詳しくなく、Cloudflareも使用していません。OpenGraphを実装し、その結果としてOneboxを機能させるために、私のサイトにog:メタデータを追加しているだけです。
その結果、自分のサイト内で多くの変更を行っており、Discourseから参照された際にそれらがどのように表示されるかを確認したいと考えています。
投稿を編集してもOneboxがリンクを再読み込みしないことに気づきました。URLに?x=1を追加すると再読み込みされます。
投稿が編集されるたびに、Oneboxは対象URLを再スキャンすべきでしょうか?
この件についてはあまり反応がないようですが、私にはバグのように思えます。Onebox の更新をオン/オフするチェックボックス制御がないのでしょうか?
別のアプローチの例として、このページではメタデータをテストして、どのような結果が得られるかを確認できますが、これは Facebook のキャッシュのフロントエンドとしても機能しています。
面白いことに、彼らの OpenGraph タグが壊れているようです!![]()
このツールで URL を試すとキャッシュ結果を取得し、その後、サイトを再スクレイピングしてキャッシュを更新するためのボタンが表示されます。
これはこのツールにも良いオプションかもしれません…例えば、キャッシュ内の URL にカーソルを合わせたときに表示されるボタンのようなものはいかがでしょうか?
現状では、この機能を実装する際の最初のテストでは、特定のリンクに表示されるものが常に基準となります。
また、当社のフォーラム内の他のトピックのワンボックスをリフレッシュする方法も模索しています。
当社のユースケースは、フォーラム全体にわたってドキュメントを構築することであり、他のウィキ投稿を再構成する可能性があります。しかし、これらはウィキ投稿であるため、時間とともに多くの編集が行われる可能性を考えると、ワンボックスが最新の状態に保たれないことは明らかに望ましくありません。
当社のフォーラムのドメインに一致する、またはこのユースケースが発生するカテゴリ(ウィキ/ドキュメント)に属するワンボックスを自動的にリフレッシュする設定があれば大変助かります。
私のメインサイト(SSO を介して Discourse と連携)で OpenGraph サポートを実装するにつれ、この問題に頻繁に直面するようになりました。
非常に役立つテクニックとして、実際の URL を(もしあれば)すぐに埋め込まない方法があります。代わりに、上記の @merefield が提案したテクニックを使用します。
各 URL を初めて参照する際に、末尾に ?n=1 を追加します。ワンボックスの表示が不理想な場合、ページを更新して N 変数をインクリメントし、表示が良くなるまでこれを繰り返します。
作業が完了すれば、URL だけを貼り付けた人も、最初のスクレイピング結果ではなく、最終的なページのスキャン結果を取得できるようになります。