Django缓存用法

1、全站缓存

#只需要在项目的配置文件中的中间件最开始和最后面加入
MIDDLEWARE = [
    # 最开始的
    'django.middleware.cache.UpdateCacheMiddleware',
    .
    .
    .
    .
    .
    #最后面的
    'django.middleware.cache.FetchFromCacheMiddleware',
]
 #这样就可以坐到全站缓存   

2、单个视图缓存

#在views.py中导入
from django.views.decorators.cache import cache_page

#通过装饰器的方式加载需要缓存的视图函数前@cache_page(5)里面的参数是指缓存多少秒,这里是5秒
#在这5秒内数据都是从缓存里面取,5秒后再重新执行该视图函数,拿取最新数据
@cache_page(5)
def home(request):
    print(111111)
    tm = time.time()
    return render(request,'home.html',{'tm':tm})

3、局部缓存

#在html代码中找到自己需要缓存的位置数据
#例如
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8">
  <title>示例</title>
  
</head>
<body>
    
<h1>你好,世界!</h1>
<h1>最新时间{{ tm }}</h1>

<!--先加载-->
{% load cache %}
    
<!--5表示过期时间,单位秒,后面的“xx”表示该缓存的键,可自定义,如要从缓存取数据就用该键-->    
{% cache 5 'xx' %}
    <!--下面的h2标签里面的数据就是我要缓存的-->
    <h2>{{ tm }}</h2>
{% endcache %}


</body>
</html>

4、关于缓存的配置

以上的所有缓存方式都可以配置缓存文件的位置,默认是缓存到客户端的内存中,也可自定义

  • 缓存到本地文件中

    • #在settings.py文件中做如下配置
      CACHES = {
           'default': {
               'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
               'LOCATION': 'D:\cc',  # 缓存文件存放路径
           }
       }
      
  • 缓存到数据库中

    • CACHES = {
          'default': {
              'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
              'LOCATION': 'xx',  # 数据库表
          },
      }
      
      #配置之后还需要在终端执行一下以下代码,目的是生成缓存数据库
      python manage.py createcachetable
      
      
  • 缓存到第三方缓存数据库中,例如redis,具体用法请看https://django-redis-chs.readthedocs.io/zh_CN/latest/

    • #先下载安装django-redis
      pip insatll django-redis
      
      
      CACHES ={
          "default": { #默认
              "BACKEND" : "django_redis.cache.RedisCache",
              "LOCATION": "redis://127.0.0.1:6379/0",#指定redis的第一个数据库
              "OPTIONS: {
                  "CLIENT_CLASS" : "django_redis.client.DefaultClient",
              }
          },
      }
      
posted @ 2021-03-21 10:19  ChenXiDylan  阅读(44)  评论(0)    收藏  举报