From e9fce441956642bef3548e3181d72a88317efa65 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Fri, 10 Nov 2017 12:26:37 -0800 Subject: [PATCH] Don't serve cache headers in debug or refresh modes --- datasette/app.py | 11 +++++++---- datasette/cli.py | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/datasette/app.py b/datasette/app.py index 7e11f3c1..690d7d5a 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -78,6 +78,7 @@ class BaseView(HTTPMethodView): self.files = datasette.files self.jinja = datasette.jinja self.executor = datasette.executor + self.cache_headers = datasette.cache_headers def redirect(self, request, path): if request.query_string: @@ -183,9 +184,10 @@ class BaseView(HTTPMethodView): **context, ) # Set far-future cache expiry - r.headers['Cache-Control'] = 'max-age={}'.format( - 365 * 24 * 60 * 60 - ) + if self.cache_headers: + r.headers['Cache-Control'] = 'max-age={}'.format( + 365 * 24 * 60 * 60 + ) return r @@ -379,12 +381,13 @@ def resolve_db_name(files, db_name, **kwargs): class Datasette: - def __init__(self, files, num_threads=3): + def __init__(self, files, num_threads=3, cache_headers=True): self.files = files self.num_threads = num_threads self.executor = futures.ThreadPoolExecutor( max_workers=num_threads ) + self.cache_headers = cache_headers def app(self): app = Sanic(__name__) diff --git a/datasette/cli.py b/datasette/cli.py index 9284e867..23b4601d 100644 --- a/datasette/cli.py +++ b/datasette/cli.py @@ -29,5 +29,5 @@ def serve(files, host, port, debug, reload): hupper.start_reloader('datasette.cli.serve') click.echo('Serve! files={} on port {}'.format(files, port)) - app = Datasette(files).app() + app = Datasette(files, cache_headers=not debug and not reload).app() app.run(host=host, port=port, debug=debug)