12

ちょっと興味がありますが、Google Maps API v3 JavaScript がローカル サーバーにキャッシュされるかどうか?

インターネット接続が遅いために、イントラネット ページの読み込みが遅いことがあるからです。そうしないと、ローカル サーバーからファイルが読み込まれ、マップ リクエストが行われたときにのみ速度が低下します。

たまに cron ジョブを実行して JavaScript ファイルを更新する準備もできています。

ご意見ありがとうございます。

4

4 に答える 4

16

「そのまま」では無理です。

Google にスクリプトをリクエストすると、Google はスクリプトに沿ってヘッダーを送信し、それらのヘッダーには「no-cache」ディレクティブが含まれています。

したがって、それらをキャッシュ可能にしたい場合は、プロキシを作成する必要があります。スクリプト src を Google に向けるのではなく、サーバーに向けます。次に、サーバーが Google を呼び出し、応答をクライアントに返します。

このようにして、HTTP ヘッダーとキャッシュを制御できます。Google への接続を少なくするために、スクリプト コンテンツをキャッシュすることもできます。

プロダクションやミッション クリティカルな Web サイトでそれを行うことはお勧めしません。すべての Google API は頻繁に更新され、多かれ少なかれまとめられています。何かが他の何かと同期しなくなった場合、追跡が困難なバグが発生します。

それが役立つことを願っています。

HEAD編集:ドキュメントのセクションにスクリプトを入れていると聞きました。多分それはあなたの「知覚された」ページの読み込み時間を傷つけています. ページのイベントで</body>タグとマップの初期化の直前にスクリプトのダウンロードを移動してみてください。onload

マイク

于 2009-12-27T05:50:05.053 に答える
4

2016 年現在、js は「Cache-Control: public, max-age=1800」ヘッダーで返されるため、少なくとも 30 分間はキャッシュされます。

于 2016-01-27T00:13:26.103 に答える
3

IMHOあなたはそれをキャッシュすることはできません。API スクリプトは、Google サーバー上のオブジェクトを呼び出します。せいぜい、結果をキャプチャして画像としてキャッシュすることができます (ただし、インタラクティブ性は失われます)。

GMap の結果をキャッシュすることが可能であれば、人々は Google の DB 全体をローカルにキャッシュするだけであり、これはユーザー契約の一部ではないと思います ;)。

オフライン マップが必要な場合は、インタラクティブでない画像を処理するか、マップ サーバーを購入する必要があります。

于 2009-12-27T05:27:28.407 に答える
0

Google の利用規約に違反しないオプションは、OpenStreetMap タイルを表示するための OpenLayers スクリプトを使用して、OpenStreetMap タイルのローカル キャッシュを保持することです。基本的にはフリーデータを利用して独自のマップサーバーを作成します。

イントラネットにとって重要な特定のポイントがある場合は、それらが OpenStreetMap にあることを確認し、必要な機能だけを備えたレンダリング サーバーを自分でセットアップできます。結局のところ、地区内の各学校をいくつかの png の上に重ねると、学校で作成された png を表示するよりも多くの作業が必要になります。

また、Google Map API に常にアクセスするのではなく、週末にマップ サーバーがタイルを取得/生成する場合、低速の外部接続での遅延も大幅に減少します。

于 2009-12-27T11:14:46.037 に答える