1

サーバーで生成された画像を表示するために、JavaScriptでGoogleマップオーバーレイ(v 3.10)を設定しました。

var overlay = new google.maps.GroundOverlay(url, MAP_BOUNDS, {map: gmap});

urlが静的URLを指している場合、オーバーレイは正常に機能します。ただし、Django(v 1.4)の動的URLを指している場合、画像は正しく表示されませんが、マップがスクロールされると、サーバーがURLを要求し続けます。 例えば:

url = 'localhost:8000/abcdef/maps/getMap'

Django urls.pyの場合:

url(r'^(?P<key>\S+)/maps/getMap/$', 'maps.views.getMap'),

URLは次のコードにリダイレクトされます:

@csrf_exempt
def getMap(request, key):

    response = HttpResponse(mimetype="image/png")

    im=Image.open('media/maps' + id + '/map.png')
    im.save(response, 'PNG')

    return response

したがって、おそらくHTTPヘッダーの何かに関連して、Googleマップ/ブラウザがキャッシュの目的で画像を処理する方法にいくつかの違いがあるように思われます。画像が取得された後もサーバーリクエストを送信し続けないようにするにはどうすればよいですか?

ブラウザコンソールで応答ヘッダーを調べると、静的画像には「Content-Length」フィールドと「Last-Modified」フィールドがあり、動的画像にはないようです。それが適切かどうかわからない。

助けてくれてありがとう。

4

1 に答える 1

1

解決策は比較的単純であることがわかります。

response = HttpResponse(image_data, mimetype="image/png")
response['Cache-Control'] = 'max-age=86400'
return response
于 2013-02-21T16:40:18.357 に答える