add ETag to tile renderer view
This commit is contained in:
parent
5ede164761
commit
decb01c9c7
1 changed files with 13 additions and 2 deletions
|
@ -1,7 +1,7 @@
|
||||||
from django.http import Http404, HttpResponse
|
from django.http import Http404, HttpResponse, HttpResponseNotModified
|
||||||
from shapely.geometry import box
|
from shapely.geometry import box
|
||||||
|
|
||||||
from c3nav.mapdata.models import Level, Source
|
from c3nav.mapdata.models import Level, MapUpdate, Source
|
||||||
from c3nav.mapdata.render.svg import SVGRenderer
|
from c3nav.mapdata.render.svg import SVGRenderer
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,6 +24,14 @@ def tile(request, level, zoom, x, y, format):
|
||||||
|
|
||||||
renderer = SVGRenderer(level, miny, minx, maxy, maxx, scale=2**zoom, user=request.user)
|
renderer = SVGRenderer(level, miny, minx, maxy, maxx, scale=2**zoom, user=request.user)
|
||||||
|
|
||||||
|
update_cache_key = MapUpdate.cache_key()
|
||||||
|
access_cache_key = renderer.access_cache_key
|
||||||
|
etag = update_cache_key+'_'+access_cache_key
|
||||||
|
|
||||||
|
if_none_match = request.META.get('HTTP_IF_NONE_MATCH')
|
||||||
|
if if_none_match == etag:
|
||||||
|
return HttpResponseNotModified()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
renderer.check_level()
|
renderer.check_level()
|
||||||
except Level.DoesNotExist:
|
except Level.DoesNotExist:
|
||||||
|
@ -39,4 +47,7 @@ def tile(request, level, zoom, x, y, format):
|
||||||
else:
|
else:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
|
response['ETag'] = etag
|
||||||
|
response['Cache-Control'] = 'no-cache'
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue