美文网首页
django_缓存

django_缓存

作者: 两点半的杂货铺 | 来源:发表于2018-02-05 10:17 被阅读91次

一、什么是缓存

我的理解就是将数据信息,保存在数据库以外的地方,当然也可以保存到数据库,做到一种数据延迟的效果,降低数据库的访问量,当数据库停止运行的时候通过缓存网站依旧可以继续运行

二、缓存的种类

  • 开发调试版本
    # 此为开始调试用,实际内部不做任何操作
    # 配置:
        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】)
            }
        }
  • 内存
# 此缓存将内容保存至内存的变量中
    # 配置:
        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 createcachetable
  • Memcache缓存(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',
            ]
        }
    }

三、缓存的作用域

  • 全站使用
使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用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安装教程

    windows下安装Django_百度经验

  • Django_中文教程[www.rejoiceblog.com]

    下载地址:Django_中文教程[www.rejoiceblog.com].pdf

  • django_分页

    一、基础篇 =view模块处理 html 页面 二、讲解 对页数限制的讲解 转换成代码 上一页/下一页操作 代码如...

  • django_多表查询

    一、一对多 利用ForeignKey 创建表 注关联表中会自动添加字段后面加_id,相当于publish _id,...

  • Django_完善博客

    通过写一个博客项目,来串联自己的知识点,并总结一些小的技巧 页面介绍 1.博客主页面 2.博客文章内容页面...

  • Django_学习前言

    开始学习Django,这个系列都是自己学习然后码字,比较辛苦,但是我真的好喜欢整理笔记啊!丧心病狂~~~~~...

  • Django_初识(一)

    学习笔记 一、创建一个服务器 需求: 1.熟悉操作命令2.连接mysql数据库.3.创建app=》polls4.熟...

  • Django_基本使用

    创建项目 django-admin startproject 项目名称__init__.py:说明mysql_dj...

  • Django_补充小技巧

    1.Templates过滤器 什么是过滤器? 写在模板中,属于Django模板语言 可以修改模板中的变量,...

网友评论

      本文标题:django_缓存

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