Django的缓存框架Cache

缓存的意义:

        动态网站的基本权衡是动态的。每次用户请求页面时,Web服务器都会进行各种计算,从数据库查询到模板呈现再到业务逻辑,创建站点访问者可以看到的页面。从处理开销的角度来看,这比标准的从文件中读取文件的服务器系统要贵得多。

        对于大多数Web应用程序而言,此开销并不大。大多数Web应用程序不是washingtonpost.com或slashdot.org; 它们只是流量一般的中小型网站。但是对于中到高流量的站点,必须尽可能减少开销。这就需要缓存了。缓存某些内容是为了保存昂贵的计算结果,这样可以大大减少服务器开销,减轻服务器压力。

        Django带有一个健壮的缓存系统,可以保存动态页面,因此不必为每个请求都计算它们。为了方便起见,Django提供了不同级别的缓存粒度:可以缓存特定视图的输出,可以仅缓存难以生成的片段,或者可以缓存整个站点。

 

缓存框架的核心目标:

  • 最佳的代码:
    缓存应该尽可能快
    因此围绕缓存最佳的所有框架代码应该保持在绝对预设,特别是对于获取操作

  • 一致性
    缓存API应该是提供跨越不同缓存先前的一致接口

  • 可扩展性
    基于开发人员的需求,缓存API应该可以在应用程序级别扩展
     

缓存

  • django内置了缓存框架,并提供了多个常用的缓存:
    1.基于Memcached缓存
    2.使用数据库进行缓存
    3.使用文件系统进行缓存
    4.使用本地内存进行缓存
    5.提供缓存扩展接口
     

缓存配置

1.创建缓存表

python manage.py createcachetable [table_name]

2.缓存配置

CACHES  = {
     '默认'{
         ' BACKEND '' django.core.cache.backends.db.DatabaseCache '' LOCATION '' my_cache_table '' TIMEOUT '' 60 '' OPTIONS '{
             ' MAX_ENTRIES '' 300 '}' KEY_PREFIX ''摇滚'' VERSION '' 1 '}
}

缓存使用

  • 在视图中使用(使用最多的场景)
    - @cache_page()
    1.时间秒60 * 5缓存五分钟
    2.cache缓存配置,默认为default
    3.key_prefix初步基线

获取缓存

从 django.core.cache 导入缓存
缓存=缓存[ ' cache_name ' ]

 

缓存操作

缓存集:

  • 超时
     

设置缓存:

  • get_many
  • set_many
     

删除缓存:

  • delete_many
    增加:
  • incr(key,value)key对应的值上添加值
    减少:
  • decr(key,value)key对应的值上减少value,如果value不写,默认变更为1

使用Redis做缓存

常见的有两个实现

  • django-redis

http://django-redis-chs.readthedocs.io/zh_CN/latest/#django

  • django-redis-cache

·https://pypi.python.org/pypi/django-redis-cache/

  • 配置和内置的缓存配置基本一致
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

- 用法和内置缓存使用一样

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值