Django点滴(一)---缓存

Cache缓存是web框架以及REST/SOA架构的设计原则之一。

Caching基本过程

IF 存在某个页面或数据的缓存

THEN 返回缓存中的页面或数据

ELSE

重新生成页面或获取数据

保存新页面或数据

返回新页面或数据 

https://docs.djangoproject.com/en/1.4/topics/cache/

Django如何连接Cache

根据不同缓存方案,在settings.py进行配置

Memcached

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
        'TIMEOUT': 60,
        'OPTIONS': {
            'MAX_ENTRIES': 1000
        }
    }
}

本地内存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    }
}

不同的缓存策略

全站缓存

在Settings.py中加入cache middleware,注意顺序。
因为FetchFromCacheMiddleware在request阶段执行,该阶段的middleware执行顺序是:正向,出现在最上的最先执行(因此FetchFromCacheMiddleware在其他处理头信息的middleware之后运行);而UpdateCacheMiddleware在response阶段执行,该阶段的middleware执行顺序是:反向,出现在最上却最后执行(因此UpdateCacheMiddleware在其他任何更改头信息的middleware之后运行)。


MIDDLEWARE_CLASSES = (
   'django.middleware.cache.UpdateCacheMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',    #adds Cookie
    ### GZipMiddleware adds Accept-Encoding
    ### LocaleMiddleware adds Accept-Language
    'django.middleware.common.CommonMiddleware',
   'django.middleware.cache.FetchFromCacheMiddleware',
)
CACHE_MIDDLEWARE_SECONDS = 3  ### in seconds


单个View缓存

利用Decorator针对单个视图进行缓存

from django.views.decorators.cache import cache_page

@cache_page(60 * 15) ### i.e. 15 minutes
def my_view(request):
    ...

模板内容缓存

{% load cache %}
{% cache 500 sidebar %}
    .. sidebar ..
{% endcache %}

底层缓存API,手工操作

手工执行缓存操作

>>> from django.core.cache import cache
>>> cache.set('my_key', 'hello, world!', 30)
>>> cache.get('my_key')
'hello, world!'


# Wait 30 seconds for 'my_key' to expire...


>>> cache.get('my_key')
None


>>> cache.set_many({'a': 1, 'b': 2, 'c': 3}, version=1)
>>> cache.get_many(['a', 'b', 'c'])
{'a': 1, 'b': 2, 'c': 3}


>>> cache.delete('a')
MIDDLEWARE_CLASSES = (
   'django.middleware.cache.UpdateCacheMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',    #adds Cookie
    ### GZipMiddleware adds Accept-Encoding
    ### LocaleMiddleware adds Accept-Language
    'django.middleware.common.CommonMiddleware',
   'django.middleware.cache.FetchFromCacheMiddleware',
)
CACHE_MIDDLEWARE_SECONDS = 3  ### in seconds

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值