Django2.1 缓存

官方文档

缓存的作用简单来说就是节约计算资源同时提高页面的访问速度,很适合用于静态页面。

Django的缓存系统需要少量设置,去告诉它缓存数据应该放在何处,数据库或者文件系统或者内存。


Memcached

Memcached是最快的缓存类型,完全基于内存的缓存服务。

Memcached作为一个守护进程运行,并分配了一定数量的RAM。它所做的只是提供了一个快速接口,用于在缓存中添加、检索和删除数据。所有数据都直接存储在内存中,因此没有数据库或文件系统使用的开销。

基于内存的缓存有一个缺点,因为数据存储在内存中,一旦服务器崩溃,数据将会丢失,不利于持久存储。个人觉得最好的方法应该是根据各个缓存类型的特点,结合使用于一个网站中。

下面是设置Memcached作为默认缓存的设置:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

Database caching

将数据存储到你的数据库中,快速且索引良好的数据库最有效。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

Filesystem caching

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

Local-memory caching

如果没有指定缓存类型,Local-memory caching就是默认的缓存。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        # 这里LOCATION的值是一个像name的标识,如果你只有一个本地内存缓存,这个选项可以省略
        'LOCATION': 'unique-snowflake',
    }
}

The per-view cache

缓存单个视图输出,通过cache_page装饰器。

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    ...

如果有多个url指向同一视图,每个url都会单独缓存。

cache_page的第一个参数是缓存时间,按秒计算,另外还有一个可选参数cache,如果你设置了多个缓存类型,这个参数可以指定数据存放到那个缓存当中,用法:

@cache_page(60 * 15, cache="special_cache")
def my_view(request):
    ...

多缓存的设置方法,例如:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
    'file_cache': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

 Django内建的cache backend(缓存后端):

  • 'django.core.cache.backends.db.DatabaseCache'
  • 'django.core.cache.backends.dummy.DummyCache'
  • 'django.core.cache.backends.filebased.FileBasedCache'
  • 'django.core.cache.backends.locmem.LocMemCache'
  • 'django.core.cache.backends.memcached.MemcachedCache'
  • 'django.core.cache.backends.memcached.PyLibMCCache'

如果使用默认的cache backend,也就是'django.core.cache.backends.locmem.LocMemCache',可以直接写空字符串''。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值