django 自带页面缓存cache_page的使用及清除

cache_page是django自带的装饰器,用起来很方便。

from django.views.decorators.cache import cache_page
@cache_page(24*3600)
def test(request):

直接在view的function中添加装饰器chche_page(过期时间),就可以对该页面进行缓存。但是这个cache函数管杀不管埋,如果缓存了列表页 那么修改/创建新的item的时候,如何更新列表页的缓存是个大问题.


翻开cache_page代码看了很久,它生成key的方法非常繁琐,先要缓存request的header,然后还要对url进行hash,要自己完全替代这个函数,还需要写更复杂的Middleware,最后找到一个函数,一般情况下够用了


from django.core.cache import cache
from django.http import HttpRequest
from django.utils.cache import get_cache_key

def expire_page(path):
    request = HttpRequest()
    request.path = path
    key = get_cache_key(request)
    if cache.has_key(key):
        cache.delete(key)

注意

  • get_cache_key用的是 request.get_full_path()
  • 在url不使用动态参数的情况下,get_full_path() = path
  • 所以这个函数是不完备的,凑后能用
原文链接:http://lutaf.com/65.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值