我在 javascript 中设置了一个谷歌地图叠加层(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 标头中的某些内容有关。我怎样才能使它在检索图像后不会继续发出服务器请求?
通过检查浏览器控制台中的响应标头,静态图像似乎具有“Content-Length”和“Last-Modified”字段,而动态图像没有。不确定这是否相关。
感谢任何帮助。