django缓存方式及配置的示例分析-创新互联
                                            这篇文章主要介绍django缓存方式及配置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

前言
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,
1. 缓存的概述:
缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回。
2. Django中提供了6种缓存方式:
- 开发调试 
- 内存 
- 文件 
- 数据库 
- Memcache缓存(python-memcached模块) 
- Memcache缓存(pylibmc模块) 
2.1 配置
开发调试
# 此为开始调试用,实际内部不做任何操作
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 引擎
    'TIMEOUT': 300,            # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
    'OPTIONS':{
     'MAX_ENTRIES': 300,          # 大缓存个数(默认300)
     'CULL_FREQUENCY': 3,          # 缓存到达大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
    },
    'KEY_PREFIX': '',            # 缓存key的前缀(默认空)
    'VERSION': 1,             # 缓存key的版本(默认1)
    'KEY_FUNCTION' 函数名           # 生成key的函数(默认函数会生成为:【前缀:版本:key】)
   }
  }
 # 自定义key
 def default_key_func(key, key_prefix, version):
  """
  Default function to generate keys.
  Constructs the key used by all other methods. By default it prepends
  the `key_prefix'. KEY_FUNCTION can be used to specify an alternate
  function with custom key making behavior.
  """
  return '%s:%s:%s' % (key_prefix, version, key)
 def get_key_func(key_func):
  """
  Function to decide which key function to use.
  Defaults to ``default_key_func``.
  """
  if key_func is not None:
   if callable(key_func):
    return key_func
   else:
    return import_string(key_func)
  return default_key_func内存
# 此缓存将内容保存至内存的变量中
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    'LOCATION': 'unique-snowflake',
   }
  }
 # 注:其他配置同开发调试版本文件
# 此缓存将内容保存至文件
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': '/var/tmp/django_cache',
   }
  }
 # 注:其他配置同开发调试版本数据库
# 此缓存将内容保存至数据库
 # 配置:
  CACHES = {
   'default': {
    'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
    'LOCATION': 'my_cache_table', # 数据库表
   }
  }
 # 注:执行创建表命令 python manage.py createcachetableMemcache缓存(python-memcached模块)
# 此缓存使用python-memcached模块连接memcache
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
   'LOCATION': '127.0.0.1:11211',
  }
 }
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
   'LOCATION': 'unix:/tmp/memcached.sock',
  }
 } 
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
   'LOCATION': [
    '172.19.26.240:11211',
    '172.19.26.242:11211',
   ]
  }
 }Memcache缓存(pylibmc模块)
# 此缓存使用pylibmc模块连接memcache
 
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
   'LOCATION': '127.0.0.1:11211',
  }
 }
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
   'LOCATION': '/tmp/memcached.sock',
  }
 } 
 CACHES = {
  'default': {
   'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
   'LOCATION': [
    '172.19.26.240:11211',
    '172.19.26.242:11211',
   ]
  }
 }Redis缓存(依赖:pip3 install django-redis)
from django_redis import get_redis_connection
conn = get_redis_connection("default")2.2 应用
全站使用
使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存 MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # 其他中间件... 'django.middleware.cache.FetchFromCacheMiddleware', ] CACHE_MIDDLEWARE_ALIAS = "" CACHE_MIDDLEWARE_SECONDS = "" CACHE_MIDDLEWARE_KEY_PREFIX = ""
单独视图缓存
方式一:
  from django.views.decorators.cache import cache_page
  @cache_page(60 * 15)
  def my_view(request):
   ...
 方式二:
  from django.views.decorators.cache import cache_page
  urlpatterns = [
   url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
  ]局部视图使用
a. 引入TemplateTag
  {% load cache %}
 b. 使用缓存
  {% cache 5000 缓存key %}
   缓存内容
  {% endcache %}以上是“django缓存方式及配置的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章名称:django缓存方式及配置的示例分析-创新互联
当前网址:http://www.scyingshan.cn/article/doodgs.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 