diff options
author | Dan McGee <dan@archlinux.org> | 2013-12-14 15:06:26 -0600 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2013-12-14 15:06:26 -0600 |
commit | 0b0e2b9d2aabd1c34f742e6525ee075751600e37 (patch) | |
tree | cd7bd988432c9caf189e6397d6cfc7de97cb68eb /public | |
parent | 5d74a99c6b8fbbd19ad441a74d835382025da522 (diff) |
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 <dan@archlinux.org>
Diffstat (limited to 'public')
-rw-r--r-- | public/utils.py | 3 | ||||
-rw-r--r-- | public/views.py | 8 |
2 files changed, 6 insertions, 5 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) |