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
This commit is contained in:
Henrik Levkowetz 2019-09-21 12:36:08 +00:00
parent d7c4639d4f
commit 1efd28752c
2 changed files with 22 additions and 13 deletions

View file

@ -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:

View file

@ -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}}
</pre>
{% cache 3600 ietf_release_list %}
<div id="release-list"></div>
<h2>Release list:</h2>
<table style="margin-left: 3em" class="table-striped">
<tbody>
{% for item in releases %}
@ -74,6 +76,7 @@
{% endfor %}
</tbody>
</table>
{% endcache %}
</div>
{% endblock %}