django的缓存

一、django的六种缓存的应用方式

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

 

2、内存

# 此缓存将内容保存至内存的变量中
    # 配置:
        CACHES = {
            ‘default‘: {
                ‘BACKEND‘: ‘django.core.cache.backends.locmem.LocMemCache‘,
                ‘LOCATION‘: ‘unique-snowflake‘,#给缓存放置的内存区设置一个名字
            }
        }

    # 注:其他配置同开发调试版本

  

3、文件

# 此缓存将内容保存至文件
    # 配置:

        CACHES = {
            ‘default‘: {
                ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘,
                ‘LOCATION‘: ‘/var/tmp/django_cache‘,#配置缓存存放的目录
            }
        }
    # 注:其他配置同开发调试版本

  

4、数据库

# 此缓存将内容保存至数据库

    # 配置:
        CACHES = {
            ‘default‘: {
                ‘BACKEND‘: ‘django.core.cache.backends.db.DatabaseCache‘,
                ‘LOCATION‘: ‘my_cache_table‘, # 数据库表
            }
        }

    # 注:需要执行创建表命令 python manage.py createcachetable,这样会额外创建一张表来存放缓存数据

  

5、memcache

# 此缓存使用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‘,
            ]
        }
    }

  

二、django的缓存的应用,一共有三种方式

1、对某个视图函数生效

from django.views.decorators.cache import cache_page

# 1、用法1,为单独的视图函数设置缓存
@cache_page(10)
# 这里10是缓存的超时时间
def test_cache(request):
    import time
    return HttpResponse(time.time())

  

2、对某个html文件的的一部分生效,主要是在html中设置

def part_cache(request):
    return render(request,"part.html",{"v":time.time()})

  

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

2、缓存的使用方法2,对页面的局部做缓存处理
    <h1>不做缓存处理{{ v }}</h1>

    {% cache 10 part_cache %}
    <h2>缓存处理{{ v }}</h2>
    {% endcache %}
</body>

</html>

  

3、对全网生效,需要在中间件中设置

# 3、缓存的用法3,全局生效,在中间件中设置
from django.middleware.security import SecurityMiddleware
from django.middleware.cache import UpdateCacheMiddleware
from django.middleware.cache import FetchFromCacheMiddleware
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‘,

    # 定义了2个自定义的中间件
    ‘middle.md.test‘,
    ‘middle.md.middle_first‘,
    ‘middle.md.middle_second‘,
    "django.middleware.cache.FetchFromCacheMiddleware"
]

  

生效的权力:全局大于》某个视图函数》某个html局部

 

原文地址:https://www.cnblogs.com/bainianminguo/p/9457994.html

时间: 2024-11-06 02:30:39

django的缓存的相关文章

django的缓存,信号,序列化

一 Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户.

Django 之 缓存机制

Django 缓存机制 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. Django提供了6种缓存

django中缓存配置

# ======缓存配置====== CACHES = { ## 虚拟缓存,开发调试版本,此为开始调试用,实际内部不做任何操作 # 'default': { # 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎 # 'TIMEOUT': 300, # 缓存超时时间(默认300秒,None表示永不过期,0表示立即过期) # 'OPTIONS':{ # 'MAX_ENTRIES': 300,# 最大缓存个数(默认300) #

Django的缓存机制和信号

Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. 2

django之缓存的用法, 文件形式与 redis的基本使用

django的缓存的用法讲解 1. django缓存: 缓存的机制出现主要是缓解了数据库的压力而存在的 2. 动态网站中,用户的请求都会去数据库中进行相应的操作,缓存的出现是提高了网站的并发量 3. django的缓存分为 : 三种粒度, 六种缓存方式: 4. 什么是三种粒度: 全站缓存, 单页面缓存, 页面中局部缓存 6. 六种缓存方式: 开发调试缓存, 内存缓存, 文件缓存, 数据库缓存, Memcache缓存(使用python-memcached, pylibmc 两种) 7. 在Djan

django cache 缓存系统

django 缓存系统 https://docs.djangoproject.com/en/dev/topics/cache/#the-low-level-cache-api http://www.ziqiangxuetang.com/django/django-cache.html 可以缓存能被pickle的对象 安装 pip install hiredis django-redis-cache setting中配置 #KEY_PREFIX  设置缓存键值的前缀 CACHES = { 'mys

Django之缓存

前言: 在商业世界中,人们常说"现金为王".然而,在技术世界里,我们却说"缓存为王". 从浏览器------>web应用-------->数据库,每一层都可以通过缓存来显著地提高系统的扩展能力,改善系统的响应能力,同时减少系统的负担. Django作为一个大而全的web框架,已经帮我们实现了缓存功能:

Django的缓存(1)

最近在主要负责公司写公司的财务核算.财务统计功能,同时也突击恶补了一些财务方面的知识(这些都是次要的),其中最重要的一点是要生成一张资产负债表.当然在生成资产负债表的时候,代码肯定会去数据库中查询大量符合条件的数据,然后在进行计算得出结果,这当中必然会影响到页面的响应速度(后经测试,打开页面要花55秒),为了提高第二次打开页面的速度,我想到了使用缓存.下面简单的讲讲django缓存相关的知识吧,由于水平有限,不足之处,敬请谅解. 缓存是指将需要频繁访问的网络内容放在离用户较近访问速度更快的系统中

django中间件 缓存

1,配置缓存 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #引擎 'LOCATION': 'd:\\django_cache', 'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大缓存个数(默认300) 'CULL_FREQUENCY':