django-redis
redis配置:settings.py
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100} # "PASSWORD": "密码", } } }
views.py
import time from django.shortcuts import render,HttpResponse def index(request):
return HttpResponse('设置成功') def order(request): return HttpResponse('获取成功')
全站缓存:
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # ... 'django.middleware.cache.FetchFromCacheMiddleware', ]
CACHE_MIDDLEWARE_ALIAS = "" CACHE_MIDDLEWARE_SECONDS = "" CACHE_MIDDLEWARE_KEY_PREFIX = ""
单视图设置缓存:
方式一:
from django.shortcuts import render,HttpResponse import time from django.views.decorators.cache import cache_page @cache_page(60 * 15) # 缓存时间 秒 def index(request): ctime = str(time.time()) return HttpResponse(ctime)
方式二:
from django.views.decorators.cache import cache_page urlpatterns = [ url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)), ]
局部缓存:
{% load cache %} <html> <body> {% cache 10 sdfsdfsd32fd %} <div>asdfasdf</div> { % endcache %} <body> </html>
CBV模式下做缓存:如果要给多个请求设置缓存,添加多个装饰器
from django.utils.decorators import method_decorator @method_decorator(cache_page(10), 'get') class LoginView(View): def get(self, request): pass def post(self, request): pass
1-配置文件 a-创建缓存文件cache b-settings配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': os.path.join(BASE_DIR,'cache') } } 2-整个页面设置缓存 from django.views.decorators.cache import cache_page @cache_page(10) #整个页面缓存 def cache(request): import time ctime = time.time() return render(request, 'cache.html', {'ctime': ctime}) 3-页面内局部设置缓存 {% load cache %} {#局部缓存#} <body> <h1>{{ ctime }}</h1> <h1>{{ ctime }}</h1> {#局部缓存#} {% cache 10 c1 %} <h1>{{ ctime }}</h1> {% endcache %} </body> 4-全网站设置缓存-->中间件 MIDDLEWARE = [ # 'django.middleware.security.SecurityMiddleware', # 'django.contrib.sessions.middleware.SessionMiddleware', # 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', # 'django.contrib.auth.middleware.AuthenticationMiddleware', # 'django.contrib.messages.middleware.MessageMiddleware', # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', ]
memcache:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'unique-snowflake', } }
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11212', '172.19.26.244:11213', ] } }