tileserver: cache tiles with better cache key
This commit is contained in:
parent
244eb9fe25
commit
379f7b91ae
1 changed files with 5 additions and 3 deletions
|
@ -159,7 +159,8 @@ class TileServer:
|
||||||
return self.cache_package
|
return self.cache_package
|
||||||
|
|
||||||
def __call__(self, env, start_response):
|
def __call__(self, env, start_response):
|
||||||
match = self.path_regex.match(env['PATH_INFO'])
|
path_info = env['PATH_INFO']
|
||||||
|
match = self.path_regex.match(path_info)
|
||||||
if match is None:
|
if match is None:
|
||||||
return self.not_found(start_response, b'invalid tile path.')
|
return self.not_found(start_response, b'invalid tile path.')
|
||||||
|
|
||||||
|
@ -211,7 +212,8 @@ class TileServer:
|
||||||
('ETag', tile_etag)])
|
('ETag', tile_etag)])
|
||||||
return [b'']
|
return [b'']
|
||||||
|
|
||||||
cached_result = self.cache.get(tile_etag)
|
cache_key = path_info+'_'+tile_etag
|
||||||
|
cached_result = self.cache.get(cache_key)
|
||||||
if cached_result is not None:
|
if cached_result is not None:
|
||||||
return self.deliver_tile(start_response, tile_etag, cached_result)
|
return self.deliver_tile(start_response, tile_etag, cached_result)
|
||||||
|
|
||||||
|
@ -219,7 +221,7 @@ class TileServer:
|
||||||
headers=self.auth_headers)
|
headers=self.auth_headers)
|
||||||
|
|
||||||
if r.status_code == 200 and r.headers['Content-Type'] == 'image/png':
|
if r.status_code == 200 and r.headers['Content-Type'] == 'image/png':
|
||||||
self.cache[tile_etag] = r.content
|
self.cache[cache_key] = r.content
|
||||||
return self.deliver_tile(start_response, tile_etag, r.content)
|
return self.deliver_tile(start_response, tile_etag, r.content)
|
||||||
|
|
||||||
start_response('%d %s' % (r.status_code, r.reason), [
|
start_response('%d %s' % (r.status_code, r.reason), [
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue