From 74703488c9beb9a3d73e67ad161635cc563eb88b Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Fri, 8 Sep 2017 00:02:09 -0400 Subject: [PATCH] Cache pages (#380) * Cache static pages so that we don't need to hit the database for them as often * Closes #378 --- CTFd/admin/pages.py | 6 ++++++ CTFd/utils.py | 5 +++++ CTFd/views.py | 4 +++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CTFd/admin/pages.py b/CTFd/admin/pages.py index a6fc12b0..b698dd3b 100644 --- a/CTFd/admin/pages.py +++ b/CTFd/admin/pages.py @@ -43,11 +43,15 @@ def admin_pages_view(route): page.html = html db.session.commit() db.session.close() + with app.app_context(): + cache.clear() return redirect(url_for('admin_pages.admin_pages_view')) page = Pages(route, html) db.session.add(page) db.session.commit() db.session.close() + with app.app_context(): + cache.clear() return redirect(url_for('admin_pages.admin_pages_view')) pages = Pages.query.all() return render_template('admin/pages.html', routes=pages, css=utils.get_config('css')) @@ -82,4 +86,6 @@ def delete_page(pageroute): db.session.delete(page) db.session.commit() db.session.close() + with app.app_context(): + cache.clear() return '1' diff --git a/CTFd/utils.py b/CTFd/utils.py index 57a0f91d..ef6f4900 100644 --- a/CTFd/utils.py +++ b/CTFd/utils.py @@ -193,6 +193,11 @@ def pages(): return pages +@cache.memoize() +def get_page(template): + return Pages.query.filter_by(route=template).first() + + def authed(): return bool(session.get('id', False)) diff --git a/CTFd/views.py b/CTFd/views.py index 14ca89e8..915dc728 100644 --- a/CTFd/views.py +++ b/CTFd/views.py @@ -111,7 +111,9 @@ def static_html(template): try: return render_template('%s.html' % template) except TemplateNotFound: - page = Pages.query.filter_by(route=template).first_or_404() + page = utils.get_page(template) + if page is None: + abort(404) return render_template('page.html', content=markdown(page.html))