django进阶(十一)之缓存模式及设置

模式

开发调试

# 此为开始调试用,实际内部不做任何操作
    # 配置:
        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模块或者pylibmc模块)

# 此缓存使用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',11)        ##11为集群时主机的权重'172.19.26.242:11211',17)
            ]
        }
    }

 

应用示例

 

①、全站应用缓存(中间件)

 

②、单独视图(单个函数)

方式一:
        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)),
        ]

缓存整个页面(默认情况下缓存时间为300秒,但是在views里设置以后,以views里的设置为全局设置)

 

③、局部缓存

 缓存一个页面中的某个标签


如果 三种方式同时存在(中间件,全局、局部),则依次生效

posted @ 2018-05-03 18:18  FRESHMANS  阅读(118)  评论(0)    收藏  举报