8

Ok!そのため、この問題について Google の担当者と話しましたが、私はエンタープライズ レベルではないため、テクニカル サポートに問い合わせることはできず、SO を回答に使用するよう提案されました。これが質問です...

Google Maps Terms には、次のように記載されています。

(b) コンテンツの事前取得、キャッシング、または保存の禁止。コンテンツをプリフェッチ、キャッシュ、または保存してはなりません。ただし、以下を保存する場合を除きます: (i) Maps API 実装のパフォーマンスを向上させる目的で一時的に (いかなる場合も30 暦日以上)、安全に、かつサービス外でのコンテンツの使用を許可しない方法で; (ii) Maps API ドキュメントで明示的に保存が許可されているコンテンツ識別子またはキー。たとえば、コンテンツを使用して、「場所」またはその他のローカル リスティング情報の独立したデータベースを作成してはなりません。

これにより、当初、Googleはいかなる種類の情報のキャッシュも許可しないと信じていました. しかし、その後、次の文章を読みました。

クライアント側のジオコーディングを使用する場合

基本的な答えは「ほぼ常に」です。ジオコーディングの制限はユーザー セッションごとであるため、ユーザーベースが拡大しても、アプリケーションがグローバルな制限に達するリスクはありません。ユーザー セッション内でジオコーディング リクエストのバッチを実行しない限り、クライアント側のジオコーディングはクォータ制限に直面しません。したがって、クライアント側のジオコーディングを実行する場合、通常は割り当てについて心配する必要はありません。

クライアント側のジオコーディングには 2 つの基本的なアーキテクチャが存在します。

ジオコーディングを実行し、全体をブラウザに表示します。たとえば、ユーザーがページに住所を入力します。アプリケーションがそれをジオコーディングします。次に、ページでジオコードを使用して、マップ上にマーカーを作成します。または、アプリでジオコードを使用して簡単な分析を行います。サーバーにデータは送信されません。これにより、サーバーの負荷が軽減されますが、ユーザーが何をしているかはわかりません。

ブラウザーでジオコードを実行し、サーバーに送信します。たとえば、ユーザーが住所を入力します。アプリケーションはブラウザでジオコーディングします。その後、アプリはデータをサーバーに送信します。サーバーは、近くの名所などのデータで応答します。これにより、独自のデータに基づいて応答をカスタマイズしたり、必要に応じてジオコードをキャッシュしたりできます。このキャッシュにより、さらに最適化することができます。サーバーにアドレスを照会して、最近キャッシュされたジオコードがあるかどうかを確認し、ある場合はそれを使用することもできます. そうでない場合は、ブラウザーに結果を返さず、結果をジオコーディングしてサーバーに送り返してキャッシュします。

したがって、一方はキャッシュできないと言い、もう一方はキャッシュすべきだと言います。それが述べている別の解決策は、可能な場合は常にクライアント側を使用することですが、両方の例でユーザー入力データが必要であると述べられているため、これも灰色の領域になります。jquery が div または span からデータを読み取り、その情報をジオコーディングした場合はどうなるでしょうか? ユーザーは実際にはジオコードを実行していませんが、それでもクライアント側で実行されていましたか? ユーザーによって生成された一連のイベントを持つサイトを作成しようとしていますが、このサイトはかなり負荷がかかる可能性があるため、これを実行できるベスト プラクティスを決定しようとしています。Google はここで提案したので、これが「トピック外」であると言う前に、これが私が投稿するように述べた場所であることに注意してください。

どんなフィードバックでも大歓迎です。

4

1 に答える 1

5

最初の引用符は、データのキャッシュを明示的に禁止するものではありません。どれだけキャッシュできるかについてはあいまいですが (明示的に「制限された量」とは何の数字ですか?)、キャッシュを禁止するものではありません。

データを 30 日以内に保持し、最初にデータを取得したサービス以外の他のサービスで使用できないようにする限り、サイトのパフォーマンスを向上させるのに役立つ場合は、データをキャッシュすることができます。 .

ユーザー インタラクションについて - ジオコーディングされた情報が表示されることを期待して、ユーザーが明示的にページに入った場合、これは「ユーザー インタラクション」を満たすと思います。

昨年取り組んだプロジェクトの例として、次のことを行うように設定しました: - マップ上にマーカーを表示する - ユーザーがマーカーをクリックすると、利用可能な場合はキャッシュからのデータを含むポップアップが表示され、そうでない場合はジオコードが表示されましたが実行され、返された情報がキャッシュの日付/時刻とともにキャッシュされます。

サイトの別のページには、1 日を通して 5 分間隔でこれらのマーカーの履歴が表示されました。キャッシュされたデータが存在する場合 (前の部分のようにマップ マーカーをクリックして)、これが表示されます。それ以外の場合は、ジオコードが実行され、以前のようにデータがキャッシュされます。ユーザーがレポートを実行するためにクリックしたことは (私の意見では)、レポートが表示される前にユーザーが手動で時間枠を選択する必要があったため、プリフェッチとしてカウントされないのに十分な「ユーザー インタラクション」でした。

その後、cron ジョブが毎日深夜に実行され、25 日以上経過したキャッシュ データを含む各レコードを調べて削除します。

実際には、表示されているマーカー位置の 10% 未満しかキャッシュしていませんでした (毎分 20 以上のマーカーが更新されていますが、レポートは毎日 3 ~ 5 個のマーカーで実行され、5 番目ごとのポイントのジオコーディング データのみが実行されていました)。

于 2013-05-09T02:53:25.630 に答える