django清除缓存数据,django cache

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: