4

Google マップに表示したい動的に生成された KML ファイルがいくつかあります。それは簡単な部分です。以前に数回やったことがありますが、問題ありません。

私が望むのは、KML ファイルがリクエストに対して Google によってのみキャッシュされることです。つまり、私の KML が読み込まれて表示されている Google マップが埋め込まれたページに人がアクセスした場合、そのページの読み込みにその KML ファイルを使用したいと考えています。しかし、ユーザーが (同じ Google マップの URL を持つ) ページを更新した場合、KML ファイルを再取得したいと考えています。

ページ上の Google マップに渡される URL (ほとんどの URL) を制御できないため、単純な「タイムスタンプ引数を追加するだけ」では機能しません。

<Link>とタグを見ると<networkLink>、外部リソースの有効期限、キャッシュ、更新などを制御できるようです。ドキュメントを読むと、2 層のアプローチを使用すると、必要なものが得られるように思えます<refreshMode>onChange<refreshMode>

これをテストした後、Google はリンクされた KML ファイルのコンテンツを実際には更新していません。10 ~ 20 分経っても複数のマップをリロードしても (マップの検索ボックスに同じ URL を指定した場合)。

これらは私が使用している KML ファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
  <NetworkLink>
    <Link>
      <href>URL</href>
      <refreshMode>onChange</refreshMode>
    </Link>
  </NetworkLink>
</Document>
</kml>

...

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
    <Placemark>
        <name>NAME</name>
        <visibility>1</visibility>
        <Style>
            STYLE
        </Style>
        GEOMETRY
    </Placemark>
</Document>
</kml>

... URL、NAME、STYLE、および GEOMETRY が正しい内容に置き換えられています。私が間違っているかもしれないことを誰かが知っていますか? または、私が望むことが可能であれば?

4

2 に答える 2

1

これは私が知っていることです:

  • onChange経由で KML の読み込み時にビューポート パススルーを有効にしない限り、応答は完全にキャッシュされます<viewFormat>。数時間経っても更新が見られません。
  • onExpireリンクされた KML ファイルでヘッダーを使用すると、'max-age'(ドキュメントによると) Google マップでは機能しませんが、[1] で説明されている動作が見られましたが、これはデフォルトの内部 Google マップの有効期限に関連している可能性があります。
  • onExpire動作は[1]<NetworkLinkControl><expires>近いように見えましたが、提供された有効期限後にデータが期限切れになったように見えます。
  • onIntervalあなた<viewRefreshTime>が十分に大きいと仮定してデータを更新し、独自のスケジュールで更新します(タイミングは少し信頼できません)が、マップビューは完全にズームアウトし始めます(修正する方法はないようです)これ)。

[1] 'max-age'X 秒を指定してページを開いたままにしておくと、ページにフォーカスがある間は KML が更新されません。フォーカスを別の Web ページまたはアプリケーションに移動した場合は、ページが更新されてからしばらく待ってから (2 分待つだけで十分な場合もあれば、そうでない場合もあります)、そのページに戻ると、元に戻る場合があります。コンテンツを返さない場合は 30 リクエストまで、コンテンツを返さない場合は 1 回だけデータの更新を試みます。

onExpire簡単に言うと、Google マップ内の KML ファイルのキャッシュ制御はonInterval、信頼性がまったくありません。データが読み込まれた後、Google のキャッシュがデータを削除したため、データは更新されます。しかし、そのキャッシュの有効期限はいつですか? 少なくとも 5 分のランダムな時間。

于 2013-03-18T07:47:55.583 に答える