From 1efd28752c7321daa9416b6c6df1d8aa990ec264 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sat, 21 Sep 2019 12:36:08 +0000 Subject: [PATCH] Added some caching to /release/ pages. With now more than 350 releases, the page response times had increased to typically 4s. Caching in view and template brought this down to ~160ms. - Legacy-Id: 16744 --- ietf/release/views.py | 30 +++++++++++++++++------------ ietf/templates/release/release.html | 5 ++++- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ietf/release/views.py b/ietf/release/views.py index 742dcba4f..0ab660bd3 100644 --- a/ietf/release/views.py +++ b/ietf/release/views.py @@ -60,18 +60,23 @@ def get_changelog_entries(): cache.set(cache_key, log_entries, 60*60*24) return log_entries +entries = None +log_entries = None +coverage_data = None def release(request, version=None): - entries = {} - log_entries = get_changelog_entries() - if not log_entries: - return HttpResponse("Error: changelog file %s not found" % settings.CHANGELOG_PATH) - next = None - for entry in log_entries: - if next: - next.prev = entry - entry.next = next - next = entry - entries = dict((entry.version, entry) for entry in log_entries) + global entries, log_entries, coverage_data + if not entries: + log_entries = get_changelog_entries() + if not log_entries: + return HttpResponse("Error: changelog file %s not found" % settings.CHANGELOG_PATH) + next = None + for entry in log_entries: + if next: + next.prev = entry + entry.next = next + next = entry + entries = dict((entry.version, entry) for entry in log_entries) + if version == None or version not in entries: version = log_entries[0].version entries[version].logentry = trac_links(escape(entries[version].logentry.strip('\n'))) @@ -83,7 +88,8 @@ def release(request, version=None): code_coverage_time = datetime.datetime.fromtimestamp(os.path.getmtime(settings.TEST_CODE_COVERAGE_REPORT_FILE)) coverage = {} - coverage_data = get_coverage_data() + if not coverage_data: + coverage_data = get_coverage_data() if version in coverage_data: coverage = coverage_data[version] for key in coverage: diff --git a/ietf/templates/release/release.html b/ietf/templates/release/release.html index 621087318..f3913143a 100644 --- a/ietf/templates/release/release.html +++ b/ietf/templates/release/release.html @@ -1,6 +1,6 @@ {% extends "base.html" %} {# Copyright The IETF Trust 2015, All Rights Reserved #} -{% load origin %} +{% load origin %}{% load cache %} {% block title %}Release information{% endblock %} @@ -51,8 +51,10 @@ -- {{entry.author}} <{{entry.email}}> {{entry.date}} + {% cache 3600 ietf_release_list %}

Release list:

+ {% for item in releases %} @@ -74,6 +76,7 @@ {% endfor %}
+ {% endcache %} {% endblock %}