インスタンスに「window.prerenderReady」を実装する必要があります[有料案件]

prerender.io を使用して、サイトの「application/JS」バージョンをクローラーに提供しています(私のインスタンスは非表示の設定でクローラーにJSバージョンを提供します)。

これはうまく機能していますが、Discourse がこのカテゴリに該当する可能性があるようです。

ただし、一部のウェブページでは、カスタムローディングフローや継続的なポーリングが Prerender のロジックを誤解させる可能性があり、それにより、ページの準備完了状態を判断できなくなります。

Prerender が Discourse の URL に初めてアクセスすると、タイムアウトします(Prerender によって設定された 20 秒)。

ページは正常にレンダリングされますが、prerender.io はページが完全に読み込まれたことを認識しないため、20 秒が経過するまでページのレンダリングを試み続け、その後 HTML バージョンを提供します。

クローラーが再度ページをリクエストすると、1 秒(またはそれ以下)でページが提供されます。URL の HTML バージョンがキャッシュされているためです。

しかし、URL は数千もあり、各 URL で 20 秒(最初にアクセスされた場合)というのは現実的ではありません。

そのため、<head> タグの直後に以下を追加する必要があります(そして、ページが完了したら変数を true に設定します)。

<script> window.prerenderReady = false; </script>

サイト全体でこれを機能させたいです。そうすれば、仕事が楽になるはずです。

これが何を意味するのかわかりませんが、もし間違っていたら教えてください。300ドル?400ドル?

これについて何かフィードバックはありますか?

それまでの間、編集できるコアファイルはありますか?

それを実行するために使用しているコードはどこかにありますか?

「いいね!」 1

JS版を提供するために使用しているコードのことですか?

それは、あなた(@pfaffman)が有効化/調整するのを手伝ってくれた、隠されたサイト設定「crawler_user_agents」でした。

編集 上記のリストから「bots」、「crawlers」、「spiders」を削除しました。

prerender.io はどのように関わっていますか? Discourse は \u003chead\u003e タグを含めるべきタイミングをどのように知るのでしょうか?

ああ、prerender は既存の <head> タグのことを指していると思いますか?

既存の <head> タグのすぐ下に <script> window.prerenderReady = false; </script> を追加するということでしょうか?

編集 また、コードを head タグ内に設定する必要があるのか、それとも closing head タグの後に設定する必要があるのかもわかりません。

prerender をインストールして、レンダリング済みのページを提供できるようにするには、どうすればよいですか? How to Install Prerender in 3 Easy Steps には 3 つの方法が記載されています。それらのいずれかを使用しましたか?

「いいね!」 1

はい、Cloudflareミドルウェアを使用しました。

Cloudflareは、ボットからのリクエストをすべて受け取り、prerenderに送信します。

prerender に、window.prerenderReadytrue または false の値を返す API 呼び出しを提供することはできますか?

<script> window.prerenderReady = false; </script>
「いいね!」 1

なるほど、APIについて少し調べましたが、少し難しそうです(でも、これでタスクが楽になるといいのですが)。

予算がこの種のタスクには少し低いですね。クローラーに提供されるものを変更することは、見た目よりも難しい場合があります。さまざまな問題が発生する可能性があります。

個人的には、そもそもこれを行うことの賢明さには少し懐疑的ですが、あなたには理由があるはずです。

Jayが言っているのは、DiscourseクライアントAPIのことだと思います。テーマコンポーネントを介して、Discourseが完全にレンダリングされたときを知ることができます。

あなたはソフトウェア開発にある程度精通しているようです。昨年、Discourseテーマ開発に関する簡単な入門コースを作成しました。そこでは、テーマでAPIを使用する方法についても説明しています。無料のオープンソースです。ここから読み始めることができます。

おそらく、ページがレンダリングされたときにトリガーされるフロントエンドイベントを使用する必要があります。コースの最初のJavaScriptユニットに到達すると、その例がいくつかあります。

「いいね!」 2

Angus、返信ありがとうございます。

それが実行する必要があることなのかどうか、よくわかりません。クローラーはすでに私のディスコースインスタンスのHTMLバージョンを取得しています。

まだ早いですが、かなり楽観的です。SEOのクリーンアップがたくさんあります。Googleは完全に新しいサイトをクロールしています。GoogleがJSを使用しないクローラーバージョンをランク付けし、実際のユーザーエクスペリエンスと同じランクを与えるとは想像できません。

最初に実行する必要があるのは、そのコードを<head>に配置することです。

次に、prerender.ioに従ってこの部分を実装することです。

そして、この変数をページのレンダリングが完了し、Prerenderがコンテンツを取得しても安全な場合にのみtrueに設定するようにしてください。これは、ページの非常に遅い段階で実行される非同期呼び出しで可能です。Prerender.ioはその後、すべての呼び出しが完了したことを確認するために短い時間待機し、ページを保存します。

提供されたドキュメントを確認します。ありがとうございます。

「いいね!」 1

何を見ているのか分かりませんが、私たちの経験では、クローラービューはサイトをかなりうまくランク付けしています。お客様からは、コミュニティがメインサイトを上回ったと報告されています。

「いいね!」 2

サイトには非常に価値のあるコンテンツがあり、アルゴリズムが「悪い部分」を無視しているだけかもしれません。ケースバイケースです。

GoogleがクローラーバージョンをJavaScriptバージョンと同じようにランク付けするというのは(一般的な意味では)理にかなっていません。

メニュー、おすすめトピック、サイドバーリンクがなく、ユーザープロフィール/バッジページはnoindexであり、その他多くの機能がクローラーバージョンでは利用できません。

結果が出たら新しいトピックで更新します。今のところ、SERPでのポジショニングは非常に不安定です。

編集 ユーザープロフィール/バッジページはヘッダー経由でnoindexになっています。