Web ページを表示する際のユーザー エクスペリエンスを向上させるためのFacebook の BigPipe手法に非常に興味があります。欠点は、Javascript ベースが多く、検索エンジンにまったく対応していないことです。
私自身の Web サイトで同様の手法を開発するとき、BigPipe を有効にせずに、より標準的なページを提供するためにサーバー側で非常に簡単に無効にできるように設計しました。今、私はそれをクローラーフレンドリーにする方法を探しています。
簡単な方法は、BigPipe 以外のコンテンツを検索エンジンのクローラー / ボットに提供し、パイプライン化されたコンテンツを残りの部分に提供することです。これはクローキングと見なされるべきではありません: コンテンツはまったく同じで、レイアウトも同じです (BigPipe の JavaScript が実行された後)。配信方法を変更する唯一のことは、よりクローラーに適したものにすることです。しかし、Google はこれを正当なものと見なすでしょうか?
2 番目の方法は、別の Javascript を使用してこの問題を解決することです。最初のリクエストで、Cookie を保存する Javascript を含む非 BigPipe ページを送信します。後続のリクエストでは、Cookie が提示された場合にのみ BigPipe コンテンツを送信します。非常に最初のページの読み込みは最適化されませんが、もう一方は最適化されます。素晴らしい解決策のように見えますが、クッキーを増やすのはあまり好きではありません。
3 つ目の方法は、Facebook のように HTML コメントを使用するのではなく、
<noscript>
タグを使用して BigPipe コンテンツをストリーミングすることです。これにより、ページレットは次のようになります。<noscript id="pagelet_payload_foo">Some content to be indexed here</noscript> <script>onPageletArrive({id:'foo', [...]})</script>
Facebookのアプローチの代わりに:
<code id="pagelet_payload_foo"><!-- Some content to be indexed here --></code> <script>onPageletArrive({id:'foo', [...]})</script>
これは見栄えが良く、シンプルで、クローラーにもユーザーにもフレンドリーです。しかし、これは私には少しハック
noscript
なようで、DOM ではタグの内容が無視されるため、IE 7/8 では機能しません。これには、これらのブラウザーの汚い特殊なケースが含まれます。
次に、Facebook が何をしているかを詳しく調べました。彼らは同じことをしているようです。ページはブラウザで最適化されていますが、Google のキャッシュにはありません。ブラウザのキャッシュと Cookie をすべて消去して、ページを再度リクエストしました。とにかく、BigPipe を通じてコンテンツを取得し続けます。Cookie ベースの技術は一切使用していません。
では、質問は簡単です。Facebook はどのようにそれを行うのでしょうか? 最初の方法はクローキングと見なされますか、それとも Facebook であるため、Facebook でのみ機能しますか? それとも、何か他のものを見逃しましたか?
ありがとう。