Conditional Caching

 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. New view decorator to only cache pages for anonymous users by vaughnkoch 2 years, 7 months ago
  2. Template tag to create a list from one or more variables and/or literals by davidchambers 2 years, 8 months ago
  3. Effective content caching for mass-load site using redirect feature by nnseva 1 year, 10 months ago
  4. Per-Instance On-Model M2M Caching by bryanhelmig 2 years, 10 months ago
  5. Run and cache only one instance of a heavy request by farnsworth 2 years, 9 months ago

Comments

(Forgotten your password?)