详解Django框架中的视图级缓存
更加颗粒级的缓存框架使用方法是对单个视图的输出进行缓存。django.views.decorators.cache定义了一个自动缓存视图响应的cache_page装饰器。他是很容易使用的:
fromdjango.views.decorators.cacheimportcache_page defmy_view(request): #... my_view=cache_page(my_view,60*15)
也可以使用Python2.4的装饰器语法:
@cache_page(60*15) defmy_view(request): #...
cache_page只接受一个参数:以秒计的缓存超时时间。在前例中,“my_view()”视图的结果将被缓存15分钟。(注意:为了提高可读性,该参数被书写为60*15。60*15将被计算为900,也就是说15分钟乘以每分钟60秒。)
和站点缓存一样,视图缓存与URL无关。如果多个URL指向同一视图,每个视图将会分别缓存。继续my_view范例,如果URLconf如下所示:
urlpatterns=('', (r'^foo/(\d{1,2})/$',my_view), )
那么正如你所期待的那样,发送到/foo/1/和/foo/23/的请求将会分别缓存。但一旦发出了特定的请求(如:/foo/23/),之后再度发出的指向该URL的请求将使用缓存。