谷歌地图地面覆盖没有缓存Django提供的动态图像



我用javascript设置了一个谷歌地图覆盖(v3.10),以显示服务器上生成的图像:

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

当url指向静态url时,覆盖效果良好。然而,当它指向Django(v1.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标头中的某些内容有关。我如何才能使它在检索到图像后不会不断发出服务器请求?

通过检查浏览器控制台中的响应标头,静态图像似乎有"内容长度"one_answers"上次修改"字段,而动态图像没有。不确定这是否相关。

感谢您的帮助。

发现解决方案相对简单:

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

相关内容

  • 没有找到相关文章

最新更新