From 0b0e2b9d2aabd1c34f742e6525ee075751600e37 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 14 Dec 2013 15:06:26 -0600 Subject: Fix some caching issues on the front page The return value from get_recent_updates() was too big for memcached due to all the attached objects, so the cache never actually worked. This sucks, because we ended up doing all the work in this function and most of the time we didn't use it because template fragment caching kicked in. Remove the cache_function decorator from this method, and instead implement delayed calling of the function so we don't compute values we aren't going to use. Template fragment caching will help us in most cases. Signed-off-by: Dan McGee --- public/utils.py | 3 +-- public/views.py | 8 +++++--- templates/public/index.html | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/public/utils.py b/public/utils.py index fcfd0f77..11091883 100644 --- a/public/utils.py +++ b/public/utils.py @@ -2,7 +2,7 @@ from collections import defaultdict from operator import attrgetter from main.models import Arch, Repo, Package -from main.utils import cache_function, groupby_preserve_order, PackageStandin +from main.utils import groupby_preserve_order, PackageStandin class RecentUpdate(object): def __init__(self, packages): @@ -58,7 +58,6 @@ class RecentUpdate(object): return "RecentUpdate '%s %s' <%d packages>" % ( self.pkgbase, self.version, len(self.packages)) -@cache_function(62) def get_recent_updates(number=15, testing=True, staging=False): repos = Repo.objects.all() if not testing: diff --git a/public/views.py b/public/views.py index f79c8f32..3b23bd42 100644 --- a/public/views.py +++ b/public/views.py @@ -20,12 +20,14 @@ from .utils import get_recent_updates @cache_control(max_age=300) def index(request): if request.user.is_authenticated(): - pkgs = get_recent_updates(testing=True, staging=True) + def updates(): + return get_recent_updates(testing=True, staging=True) else: - pkgs = get_recent_updates() + def updates(): + return get_recent_updates() context = { 'news_updates': News.objects.order_by('-postdate', '-id')[:15], - 'pkg_updates': pkgs, + 'pkg_updates': updates, } return render(request, 'public/index.html', context) diff --git a/templates/public/index.html b/templates/public/index.html index c5924ab7..58dd3729 100644 --- a/templates/public/index.html +++ b/templates/public/index.html @@ -105,7 +105,7 @@ {% endcache %} -{% cache 59 main-page-right secure %} +{% cache 115 main-page-right secure %}