Login

Conditional Caching

Author:
Archatas
Posted:
September 9, 2009
Language:
Python
Version:
1.1
Tags:
views cache decorators
Score:
0 (after 0 ratings)

This trick is for caching a view only if it passes some condition, for example, if there are more than zero items in a list. The same methodology could be used for conditional applying of other decorators.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# ...
from django.views.decorators.cache import cache_page

def optionally_cached_view(request, *args, **kwargs):
    # ...
    condition = ...
    response = HttpResponse(...)
    f = lambda request, *args, **kwargs: response
    if condition:
        cached_f = cache_page(f, 60*15)
        return cached_f(request, *args, **kwargs)
    return response

# for comparison, there are analogous examples of uncached and strictly-cached views: 

def uncached_view(request, *args, **kwargs):
    # ...
    return HttpResponse(...)

def cached_view(request, *args, **kwargs):
    # ...
    return HttpResponse(...)
cached_view = cache_page(cached_view, 60*15)

More like this

  1. Conditional cache decorator by alexisbellido 2 years, 7 months ago
  2. Cache Decorator by ericmoritz 6 years, 3 months ago
  3. Decorator to logout user based on a test and/or redirect to another url by vemubalu 4 years, 3 months ago
  4. Use memcached to throttle POSTs by coleifer 4 years, 10 months ago
  5. New view decorator to only cache pages for anonymous users by vaughnkoch 4 years, 5 months ago

Comments

Please login first before commenting.