django清除缓存数据,django cache
由于Django是一个动态的网站,所有的请求都会转到数据上进行相应的操作。当节目有大量访问时,耗时必然更明显。最简单的解决方法是使用:缓存,将某个视图的返回值保存到内存或memcache中。当有人在5分钟内再次来访时,不会执行view中的操作,而是直接取回之前缓存在内存或Redis中的内容并返回。
Django中提供了6种缓存方式:
1.开发和调试
2.记忆
3.文档
4.数据库资料库
5.Memcache缓存(python-memcached模块)
6.Memcache缓存(pylibmc模块)
一般配置
超时 3360300,#缓存超时(默认值为300,无表示永不过期,0表示立即过期)
选项 :{
MAX_ENTRIES:300,#缓存数量(默认为300)
CULL_FREQUENCY:3,#缓存数量到达后,剔除缓存数量的比例,即1/CULL_FREQUENCY(默认为3)。
},
Key _ prefix 3360 ,缓存键的#前缀(默认为空)
版本 33601,#缓存密钥的版本(默认为1)
KEY_FUNCTION 函数名#生成密钥的函数(默认函数将生成为:[前缀:版本:key])。以上六种模式都可以。
自定义密钥
defdefault_key_func(密钥,密钥前缀,版本):
Defaultfunctiontogeneratekeys。
构造Constructsthekeyusedbyallothermethods。Bydefaultitprepends
“关键字前缀”。KEY _可用于指定替代
functionwithcustomkeymakingbehavior。
返回 %s:%s:%s%(key_prefix,version,key)
defget_key_func(key_func):
functiontodecidewhichkeyfunctiontouse。
nbsp;Defaultsto``default_key_func``.
"""
ifkey_funcisnotNone:
ifcallable(key_func):
returnkey_func
else:
returnimport_string(key_func)
returndefault_key_func开发调试
#此为开始调试用,实际内部不做任何操作
内存
#此缓存将内容保存至内存的变量中
文件
#此缓存将内容保存至文件
相关推荐:《Python视频教程》
数据库
#此缓存将内容保存至数据库
# 注:执行创建表命令 python manage.py createcachetable
Memcache缓存(python-memcached模块)
#此缓存使用python-memcached模块连接memcache
Memcache缓存(pylibmc模块)
#此缓存使用pylibmc模块连接memcache
缓存的应用
1.单独视图缓存
fromdjango.views.decorators.cacheimportcache_page
即通过装饰器的方式实现,导入模块之后,在需要缓存的函数前加@cache_page(60 * 15) 60*15表示缓存时间是15分钟
例子如下:
fromdjango.views.decorators.cacheimportcache_page
前端页面如下:
<!DOCTYPEhtml>
这样在前端页面在获取的ctime的时候就会被缓存10秒钟,10秒钟之后才会变化,但是这样的话就相当月所有的调用ctime的地方都被缓存了。
2.局部缓存
引入TemplateTag
更改前端代码如下:
{%loadcache%}
这样就实现了最后一个ctime缓存,其他两个不缓存。
3.全站缓存
全站缓存的时候,需要在中间件的最上面添加:
'django.middleware.cache.UpdateCacheMiddleware',
在中间件的最下面添加:
'django.middleware.cache.FetchFromCacheMiddleware',
其中'django.middleware.cache.UpdateCacheMiddleware'里面只有process_response方法,在'django.middleware.cache.FetchFromCacheMiddleware'中只有process_request方法,所以最开始是直接跳过UpdateCacheMiddleware,然后从第一个到最后一个中间件的resquest,第一次没有缓存座椅匹配urls路由关系依次进过中间件的process_view,到达views函数,再经过process_exception最后经过response,到达FetchFromCacheMiddleware
相关推荐:
Django中的缓存Cache是什么
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。