Django中的缓存(内存,文件,redis)
Posted 可口_可乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中的缓存(内存,文件,redis)相关的知识,希望对你有一定的参考价值。
一、Django中的缓存的几种方法
1)单个视图缓存。时间测试
import time from django.views.decorators.cache import cache_page @cache_page(5) # 缓存5秒 def test_time(request): ctime=time.time() return HttpResponse(ctime)
在5秒内访问的时间不变,该缓存到了内存里面
2)设置全局缓存
需要在settings添加中间件
MIDDLEWARE_CLASSES = ( ‘django.middleware.cache.UpdateCacheMiddleware’, #第一 ,重写了response的方法 ‘django.middleware.common.CommonMiddleware‘, ‘django.middleware.cache.FetchFromCacheMiddleware‘, #最后,重写了request的方法 ) “update” 必须配置在第一个 “fetch” 必须配置在最后一个
配置缓存时间:CACHE_MIDDLEWARE_SECONDS=10
settings的示例
MIDDLEWARE_CLASSES = ( ‘django.middleware.cache.UpdateCacheMiddleware‘, #响应HttpResponse中设置几个headers ‘django.contrib.sessions.middleware.SessionMiddleware‘, ‘django.middleware.common.CommonMiddleware‘, ‘django.middleware.csrf.CsrfViewMiddleware‘, ‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.auth.middleware.SessionAuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘, ‘django.middleware.security.SecurityMiddleware‘, ‘django.middleware.cache.FetchFromCacheMiddleware‘, #用来缓存通过GET和HEAD方法获取的状态码为200的响应 ) CACHE_MIDDLEWARE_SECONDS=10
视图函数编写(缓存所有视图有效)
import time def test_time(request): ctime=time.time() return HttpResponse(ctime)
3)模板层中的缓存。只缓存需要的内容。(关闭全局缓存)
html的编写
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="/static/jquery-3.3.1.js"></script> <title>Title</title> </head> <body> {% load cache %} 当前时间:{{ ctime }} <hr> {% cache 5 ‘time‘%} 应用缓存:{{ ctime }} {% endcache %} </body> </html>
视图编写
import time def test_time(request): ctime=time.time() return render(request,‘test.html‘,locals())
4)文件中的缓存。settings配置
CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘, #指定缓存使用的引擎 ‘LOCATION‘: ‘/var/tmp/django_cache‘, #指定缓存的路径 ‘TIMEOUT‘:300, #缓存超时时间(默认为300秒,None表示永不过期) ‘OPTIONS‘:{ ‘MAX_ENTRIES‘: 300, # 最大缓存记录的数量(默认300) ‘CULL_FREQUENCY‘: 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) } } }
视图编写
import time from django.views.decorators.cache import cache_page @cache_page(5) def test_time(request): ctime=time.time() return HttpResponse(ctime)
访问会在配置的路径下生成缓存文件
5)缓存到redis中。
5.1)安装 pip3 install django-redis
5.2)setting.py里面进行配置
# redis配置 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": "123", } } }
以上是关于Django中的缓存(内存,文件,redis)的主要内容,如果未能解决你的问题,请参考以下文章