1

Я создал Google Maps наложения (v 3.10) в JavaScript для отображения изображения, сгенерированного на сервере:Google Maps Ground Overlay не кэширует Джанго служил динамическое изображение

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

Когда URL-адрес указывает на статический url, наложение работает отлично. Однако, когда он указывает на динамический URL-адрес Django (v 1.4), изображение dispalys правильно, но он продолжает делать запрос сервера на 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 

Так, мне кажется, есть какая-то разница в том, google maps/браузер обрабатывает изображение для целей кэширования, возможно, связано с чем-то в заголовке HTTP. Как я могу сделать это, чтобы он не выполнял запросы сервера после получения изображения?

Из проверки заголовков ответов в консоли браузера кажется, что статическое изображение имеет поля «Content-Length» и «Last-Modified», которые нет в динамическом изображении. Не уверен, что это актуально.

Благодарен за любую помощь.

ответ

1

Оказывается, решение относительно прост:

response = HttpResponse(image_data, mimetype="image/png") 
response['Cache-Control'] = 'max-age=86400' 
return response