django缓存优化 缓存配置与使用 - template low-level api 缓存

template 片段缓存


定义一个测试用的视图函数

from django.shortcuts import render,render_to_response
from datetime import datetime

# Create your views here.

def index(request):
    sec = datetime.now().second
    return render(request,'index.html', locals())



使用模板标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% load cache %}
{% cache 5 cacheName %}
<h1>{{ sec }}</h1>
{% endcache %}
<h1>{{ sec }}</h1>
<h1></h1>
</body>
</html>

5为 缓存时间,cacheName 缓存片段名字,不能使用变量

默认缓存到default缓存后端,也可以指定

{% cache 300 local-thing ... using = 'cache_alias' %}


得到模板缓存中的key

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% load cache %}
{% with p1='p1' %}
{% with p2='p2' %}
{% cache 300 cacheName p1 p2 %}
<h1>{{ sec }}</h1>
{% endcache %}
{% endwith %}
{% endwith %}
<h1>{{ sec }}</h1>
<h1></h1>
</body>
</html>

p1 p2 是附加参数 用于生成缓存key 可以不写


>>> from django.core.cache.utils import make_template_fragment_key
>>> k=make_template_fragment_key('cacheName', vary_on=['p1','p2'])
>>> from django.core.cache import cache
>>> cache.get(k)
'\n<h1>35</h1>\n'


------------------------------

Low-level 缓存 基本用法

set(key,value,timeout)

get(key)

add(key, value, timeout)

get_many(key_list)

set_many(key_value_dict,timeout)

delete(key)

delete_many(key_list)

clear()

incr(key,value)

decr(key,value)

close() ????

incr_version(key[,version=2])

decr_version(key)


注意

使用Memcached缓存后端, 不允许缓存key超过250个字符,不允许包括空白和控制字符,如果使用会抛出异常

为了提高代码的健壮性,如果key在memcached中引起错误,其他内建缓存后端会发出

django.core.cache.backends.base.CachKeyWarning警告  ??????????



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值