Facebookでページを共有したいAngularjsアプリケーションがあります。これはメタ タグ ( https://developers.facebook.com/docs/sharing/best-practices ) で処理されますが、js は Facebook のクローラーによって実行されないため、js でメタ タグを変更することはできません。したがって、クローラーがサーバーからページを取得する前に、 prerender.io を使用してページを実行およびレンダリングしたいと考えています。
ドキュメントを正しく理解しているかどうかはわかりません ( https://github.com/greengerong/prerender-java )。
これは、GitHub の README.md からの web.xml の例です。
<filter>
<filter-name>prerender</filter-name>
<filter-class>com.github.greengerong.PreRenderSEOFilter</filter-class>
<init-param>
<param-name>prerenderServiceUrl</param-name>
<param-value>http://localhost:3000</param-value>
</init-param>
<init-param>
<param-name>crawlerUserAgents</param-name>
<param-value>me</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>prerender</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
物事を正しくしようと何度も試みた後、この部分を単純に削除すると、次のことがわかりました。
<init-param>
<param-name>prerenderServiceUrl</param-name>
<param-value>http://localhost:3000</param-value>
</init-param>
GAE で Websocket を処理する必要はありません (これにより、次のエラーが発生しました:「Caused by: java.net.SocketException: Permission denied: ...」)。また、http://に既にデプロイされているデフォルトを使用できます。 prerender.herokuapp.com . 質問 1) デフォルト サービスを使用する場合と独自のサービスをデプロイする場合の長所と短所は何ですか?
現在、サービスは機能しているようで、サーバー エラーは発生しません。すばらしいです。
ドキュメント ( https://github.com/greengerong/prerender-java ) で説明されているように、最初に「me」をユーザー クローラー エージェントとして使用しました。「me」をクローラー エージェントとして使用すると、prerender が独自の API 呼び出しをキャッシュし始めました。たとえば、サーバーから大量のアイテムを取得していたとき、prerender は HTML を返し、必要な JSON で URI をキャッシュしました。だから今、私は prerender.io にキャッシュされたページをいくつか持っていますが、キャッシュしたいページではありません:)。
そこで、crawlerUserAgent を次のように変更しました。
<init-param>
<param-name>crawlerUserAgents</param-name>
<param-value>facebookexternalhit/1.1</param-value>
</init-param>
(facebookexternalhit、FacebookUserExternalHit なども試しました)。現在、prerender.io にキャッシュされたページを取得しておらず、Facebook のクローラーがページを取得する前に JavaScript が実行されていません。デバッガー ( https://developers.facebook.com/tools/debug/og/object/ ) を見ると、クローラーは元のメタ タグのみを認識し、js に置き換えたメタ タグは認識していないことがわかります。さまざまなページで(ページを開いて要素を調べると、メタタグが置き換えられます)。
質問 2) 私はこれを正しく行っていますか? 他のクローラー ユーザー エージェントを試す必要がありますか? facebookexternalhit は正しいですか?