美文网首页
django缓存

django缓存

作者: 戴维得 | 来源:发表于2017-10-05 21:59 被阅读0次

缓存就是将你常用的数据放在内存里面,方便大量的访问,每次请求过来之后,django都会优先访问缓存,看看缓存里面有没有需要的数据,如果没有的话,再从数据库里面取,缓存里面的数据都有超时时间,如果超时间的话就会从数据库里面进行更新,一般情况下缓存都是另外一台机器的内存,也可能放到文件等其他容易访问的地方,django 里面可以直接调用缓存

缓存在内存中

配置

CACHES = {
                'default': {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    'LOCATION': 'unique-snowflake',
    'TIMEOUT': 300,       
    'OPTIONS':{
            'MAX_ENTRIES': 300,          
            'CULL_FREQUENCY': 3,    
                    }
                }
            }
  • 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',就是这个类帮助我们取缓存和写缓存
  • 'LOCATION': 'unique-snowflake', 唯一的缓存变量
  • 'TIMEOUT': 300, 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
  • 'MAX_ENTRIES': 300, 最大缓存个数(默认300)缓存个数不能是无线次的
  • 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,清空1/3即:1/CULL_FREQUENCY(默认3)

应用

装饰器 @chche_page(缓存时间)

# 单独视图函数:粒度适中
from django.views.decorators.cache import cache_page

@cache_page(5)
def test(request):
# user_list = models.UserInfo.objects.all()
ctime = time.time()
return render(request,'test.html',{'ctime':ctime})

缓存在文件中

配置

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': 'D:\cache', #缓存文件路径
        'TIMEOUT': 300,     # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
            'OPTIONS':{
                'MAX_ENTRIES': 300,   # 最大缓存个数(默认300)
                'CULL_FREQUENCY': 3,     # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
                    }
                }
            }

Memcache缓存

需要找一台大内存的及其然后安装memcache软件

链接那台机器 。。。待续...

配置

CACHES = {
                'default': {
                    'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
                    'LOCATION': '127.0.0.1:11211',
                    'TIMEOUT': 300,                                               # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
                    'OPTIONS':{
                        'MAX_ENTRIES': 300,                                       # 最大缓存个数(默认300)
                        'CULL_FREQUENCY': 3,                                      # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
                    }
                }
            }

应用

粒度适中

加载哪个视图函数中就在哪个视图函数中应用,装饰器 @chche_page(缓存时间)

# 单独视图函数:粒度适中
from django.views.decorators.cache import cache_page

@cache_page(5)
def test(request):
# user_list = models.UserInfo.objects.all()
ctime = time.time()
return render(request,'test.html',{'ctime':ctime})

全站缓存,粒度大

全站缓存可以使用中间件了

请求经过一层层中间件到最后一个中间件的时候应该进入读取缓存,第一次的时候没有缓存,然后返回最后一个中间件,这时进入视图函数进入数据库取数据,当数据返回的时候数据从最后一个中间件开始经过中间件直到返回到第一个中间件的时候将数据加载进缓存并且给用户

加中间件

MIDDLEWARE = [
  'django.middleware.cache.UpdateCacheMiddleware', # 开头缓存中间件
  'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'django.middleware.cache.FetchFromCacheMiddleware',  # 结束缓存中间件
                ]
CACHE_MIDDLEWARE_SECONDS = 5 # 设定缓存时间,优先级比默认高

局部缓存,粒度小

在HTML页面中

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

    {% cache 5 'xxxxxfdfdf' %}    <!--5表示缓存时间,后面的key可以随便写-->
    <h1>{{ ctime }}</h1>
    {% endcache %}

  </body>
</html>

相关文章

  • 第十一天

    drf的缓存设置 django本身是支持缓存的,drf的缓存是在django缓存上的二次开发。安装drf exte...

  • django-cache

    以前学习django缓存,视频看的云里雾里,今天读到一篇文章豁然开朗,以此记录。感谢!链接:[Django缓存和信号

  • django项目中使用 memcached (安装与使用)

    在django 中,如果你想提升请求的响应速度,那么使用缓存是很好的办法。django的官网上介绍了如何引入缓存,...

  • 33_Django的缓存

    Django的缓存 全站缓存: 单页面缓存: 页面局部缓存: 缓存的位置:(只需要改配置文件) 内存 文件 数据库...

  • django-settings里redis连接与缓存配置

    Django-redis的缓存配置 配置session存储

  • Django缓存

    为什么使用缓存?以空间换时间。 https://docs.djangoproject.com/zh-hans/2....

  • Django - 缓存

    Python的web框架,就Django支持缓存工具。 根据缓存存放位置可以分为: 一、配置 1.开发调试此为开始...

  • django缓存

    缓存就是将你常用的数据放在内存里面,方便大量的访问,每次请求过来之后,django都会优先访问缓存,看看缓存里面有...

  • django缓存

    django-redis官网文档:http://django-redis-chs.readthedocs.io/z...

  • django 缓存

    连接地址 PythonCourse/web/django at master · RockTeach/Python...

网友评论

      本文标题:django缓存

      本文链接:https://www.haomeiwen.com/subject/wqgkyxtx.html