Django点滴(一)---缓存

来源:互联网 发布:linux文件夹改名 编辑:程序博客网 时间:2024/06/05 06:22

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 minutesdef 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

原创粉丝点击