我已在javascript中设置谷歌地图叠加层(v 3.10),以显示在服务器上生成的图像:
var overlay = new google.maps.GroundOverlay(url, MAP_BOUNDS, {map: gmap});
当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'),
网址重定向到此代码:
@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标题中的内容有关。我怎样才能这样做,以便在检索到图像后不会继续发出服务器请求?
通过检查浏览器控制台中的响应标题,静态图像似乎具有“内容长度”和“内容长度”。和&#39; Last-Modified&#39;动态图像不是字段。不确定这是否相关。
感谢任何帮助。
答案 0 :(得分:1)
原来解决方案相对简单:
response = HttpResponse(image_data, mimetype="image/png")
response['Cache-Control'] = 'max-age=86400'
return response