From f4b57eff96aa8ce2a86f8ad08f6d70af63713e78 Mon Sep 17 00:00:00 2001 From: Matt Jibson Date: Fri, 6 Nov 2015 12:15:15 -0500 Subject: [PATCH] Set and use ETag headers Also set no-cache exactly as github recommends. The removed @no_cache decorater used "Cache-Control:no-cache, no-store, must-revalidate", but just no-cache should be sufficient, and should certainly work correctly with github. See: https://github.com/github/markup/issues/224#issuecomment-48532178 fixes #712 --- endpoints/web.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/endpoints/web.py b/endpoints/web.py index 4f0d0614a..ac2bf4dce 100644 --- a/endpoints/web.py +++ b/endpoints/web.py @@ -399,7 +399,6 @@ def confirm_recovery(): @web.route('/repository//status', methods=['GET']) @parse_repository_name -@no_cache @anon_protect def build_status_badge(namespace, repository): token = request.args.get('token', None) @@ -423,8 +422,13 @@ def build_status_badge(namespace, repository): else: status_name = 'none' + if request.headers.get('If-None-Match') == status_name: + return Response(status=304) + response = make_response(STATUS_TAGS[status_name]) response.content_type = 'image/svg+xml' + response.headers['Cache-Control'] = 'no-cache' + response.headers['ETag'] = status_name return response