Django Cache

缓存框架的核心目标

  • 较少的代码
    • 缓存应该尽可能快
    • 因此围绕缓存后端的所有框架代码应该保持在绝对最小值,特别是对于获取操作
  • 一致性
    • 缓存API应该是提供跨越不同缓存后端的一致接口
  • 可扩展性
    • 基于开发人员的需求,缓存API应该可以在应用程序级别扩展

缓存(Cache)

  • django内置了缓存框架,并提供了几种常用的缓存
    • 基于Memcached缓存
    • 使用数据库进行缓存
    • 使用文件系统进行缓存
    • 使用本地内存进行缓存
    • 提供缓存扩展接口

使用数据库进行缓存

  1. 缓存配置
    settings.py文件中加入如下配置
CACHES = {
	'default': {
		'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 使用的缓存类型
		'LOCATION': 'cache_table',
		'TIMEOUT': '60',	# 缓存超时时间(一般不配置,在设置的时候写入)
		'OPTIONS': {
			'MAX_ENTRIES': '300',
		},
		'KEY_PREFIX': 'WQ', # 前缀
		'VERSION': '1',
	}
}

  1. 创建缓存表
python manage.py createcachetable [table_name]
使用缓存
  • 在视图中使用(使用最多的场景)
  • @cache_page()
    • time 秒 60*5 缓存五分钟
    • cache 缓存配置, 默认default,
    • key_prefix 前置字符串
缓存底层

获取cache

from django.core.cache import cache
cache = cache['cache_name'] 或 cache = cache.get('cache_name')

设置cache

from django.core.cache import cache
cache.set(key, value, timeout)
  • 缓存操作

    • cache.set

      • key

      • value

      • timeout

    • get

    • add

    • get_or _set

    • get_many

    • set_many

    • delete

    • delete_many

    • clear

    • incr 增加

      • incr(key, value) key对应的值上添加 value
    • decr 减少

      • decr(key, value) key对应的值上减少value

      • 如果value不写,默认变更为1

使用原生缓存来实现

def index3(request):
    # 从缓存中获取key=cache_data的内容
    data = cache.get('cache_data')
    # 如果有缓存,则直接返回
    if data:
        return HttpResponse(data)
    # 如果没有缓存
    else:
        blogs = Blog.objects.all()
        time.sleep(5)
        # 获取模板
        template = loader.get_template("index3.html")
        result = template.render({"blogs": blogs})
        print(result, type(result))

        # 设置缓存   缓存时间20秒
        cache.set("cache_data", result, 20)

        return HttpResponse(result)

使用Redis缓存

需要安装django-redis
pip install django-redis
只需要在settings中更改CACHES的配置文件

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/4',  # 缓存表
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        },
        'KEY_PREFIX': 'QF',  # 前缀
    }
}

用法和内置缓存使用一样

Django cache(缓存)是Django框架中用于提高网站性能和降低数据库负载的一种机制。在Web开发中,访问数据库是一个相对较慢的操作,而缓存可以将一些频繁访问的数据存储在内存中,以便快速访问,从而提高网站的响应速度。 Django中的缓存系统提供了多种缓存后端选项,如Memcached、数据库缓存、本地内存缓存等。我们可以根据实际需求选择合适的缓存后端。 使用缓存可以减少对数据库的查询次数,当用户请求相同的数据时,可以直接从缓存中获取,而无需再次查询数据库。这减少了数据库的负载,提高了网站的性能。 Django的缓存API简单易用。我们可以使用装饰器@cache_page将整个视图函数的输出缓存一段时间,这样相同的请求在缓存时间内都会得到相同的响应。这对于一些静态内容或相对稳定的页面非常有用。 另外,我们还可以使用缓存模板标签将部分需要缓存的页面片段存储起来,使得页面中只有某些部分是动态生成的,其他部分可以直接从缓存中获取,从而减少页面加载时间。 当我们的网站更新了数据时,可以通过一些手段来更新缓存,如手动清除缓存、使缓存过期等。这样可以保证当有新数据时,用户仍然可以获取到最新的信息。 总之,使用Django缓存可以提高网站性能、降低数据库负载,使用户获得更高的访问体验,同时也是一种常用的优化网站性能的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值