2013-11-15 6 views
5

この質問は、正確なソフトウェアスタック、フレームワーク、または言語に関連していない可能性があります。Facebookの1ページアプリケーションとの共有

私の現在のプロジェクトでは、AngularJSを使用して、実際のデータとレンダリングを読み込むためのエントリーページが一定のフロントエンドを構築しています。これはCDNにとって簡単で、ブラウザ側からの読み込み速度が速いです。しかし、いくつかの社会的特徴のために、そのような建築家は何らかの問題を引き起こすかもしれません。たとえば、興味のあるリンクをFacebookポータルに貼り付けて共有すると、Facebookはあなたのページをつかんでプレビューを表示します。ランディングページが空の場合、このようなプレビューは機能しません。

(Googleでは、最近、プレビューを送信する前にサーバー側でjavascriptロジックのレンダリングをサポートしていると聞きましたが、明らかに他の類似サービスの一般的なサポートではありません)。

実際のデータを含む動的ページを持つようにフォールバックするのではなく、この問題を適切に解決するためのより良い解決策がありますか?私はこの問題を理解する上で何かを逃したことがありますか?

========

...私もPhantomJSのようなSTHを包む特殊なゲートウェイにリダイレクト、(ユーザエージェントのような)FB要求として特定の要求のために、そのことを考えていましたページを取得し、それをサーバ側にレンダリングし、FBのコンテンツとしてDOMツリースナップショットを返送してプレビューを生成する。しかし、私はそれが良い方向だとも疑う。 :

+0

ノードを使用している場合は、サーバでレンダリングするのに役立つモジュールを作成しました。 https://www.npmjs.org/package/googlebot –

+0

こんにちは@dvidsilva、それは素晴らしいです。私はそれをチェックします、ありがとう。 –

+0

こんにちは@dvidsilva、それは実際のWebアプリケーションのためのリバースプロキシとして動作するGoogleのボットのためにいいですね。フロントエンドWebサーバーがボットリクエスト(ユーザーエージェントチェックなど)を識別した場合は、リクエストをgooglebotにルーティングし、googlebotは実際のアプリケーションサーバーから実際のページを取得します。それがサポートされているかどうかは分かりません): –

答えて

0

単純な解決策は、サーバがFacebookスクレイパーに提供するページにOpen Graphメタタグを使用することです。 基本的に、あなたのウェブアプリケーションがクライアントをやっていることをサーバ側で行う必要があります。側の作業量は非常にあなたのホスティング技術(MVCはそれが超簡単になり)、あなたのURIの形式と、使用するAPIに依存

あなたはここにいくつかの説明があります:。 https://developers.facebook.com/docs/plugins/share-button/

オープングラフの導入を: http://ogp.me/

関連する問題