Add caching to the changes api since it is so expensive and can return large results.
This commit is contained in:
parent
c90602e48d
commit
13b457c440
2 changed files with 14 additions and 0 deletions
|
@ -20,6 +20,7 @@ from auth.permissions import (ReadRepositoryPermission,
|
||||||
AdministerRepositoryPermission)
|
AdministerRepositoryPermission)
|
||||||
from endpoints import registry
|
from endpoints import registry
|
||||||
from endpoints.web import common_login
|
from endpoints.web import common_login
|
||||||
|
from util.cache import cache_control
|
||||||
|
|
||||||
|
|
||||||
store = storage.load()
|
store = storage.load()
|
||||||
|
@ -380,6 +381,7 @@ def get_image(namespace, repository, image_id):
|
||||||
|
|
||||||
@app.route('/api/repository/<path:repository>/image/<image_id>/changes',
|
@app.route('/api/repository/<path:repository>/image/<image_id>/changes',
|
||||||
methods=['GET'])
|
methods=['GET'])
|
||||||
|
@cache_control(max_age=60*60) # Cache for one hour
|
||||||
@parse_repository_name
|
@parse_repository_name
|
||||||
def get_image_changes(namespace, repository, image_id):
|
def get_image_changes(namespace, repository, image_id):
|
||||||
permission = ReadRepositoryPermission(namespace, repository)
|
permission = ReadRepositoryPermission(namespace, repository)
|
||||||
|
|
12
util/cache.py
Normal file
12
util/cache.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
from functools import wraps
|
||||||
|
|
||||||
|
|
||||||
|
def cache_control(max_age=55):
|
||||||
|
def wrap(f):
|
||||||
|
@wraps(f)
|
||||||
|
def add_max_age(*args, **kwargs):
|
||||||
|
response = f(*args, **kwargs)
|
||||||
|
response.headers['Cache-Control'] = 'max-age=%d' % max_age
|
||||||
|
return response
|
||||||
|
return add_max_age
|
||||||
|
return wrap
|
Reference in a new issue