Django缓存机制

Django中的缓存方式

缓存方式:缓存的位置

  1. 开发调试缓存:没有缓存

  2. 缓存到内存中

  3. 缓存到数据库

  4. 缓存到文件

  5. 缓存到redis

缓存位置的配置(在setting中配置,BACKEND不同,缓存的位置不同)

文件缓存setting

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)
  }
 }   
}

缓存粒度

  1. 全站缓存

  2. 单页面缓存

  3. 局部缓存

缓存的使用

需要配置setting文件,将CACHE配置进去

单页面缓存:

from django.views.decorators.cache import cache_page
import time
from .models import *

@cache_page(15)          #超时时间为15秒
def index(request):
  t=time.time()      #获取当前时间
  bookList=Book.objects.all()
  return render(request,"index.html",locals())

全站缓存:

缓存整个站点,是最简单的缓存方法

在 MIDDLEWARE_CLASSES 中加入 “update” 和 “fetch” 中间件
MIDDLEWARE_CLASSES = (
    ‘django.middleware.cache.UpdateCacheMiddleware’, #第一
    'django.middleware.common.CommonMiddleware',
    ‘django.middleware.cache.FetchFromCacheMiddleware’, #最后
)
“update” 必须配置在第一个
“fetch” 必须配置在最后一个

局部缓存:

{% load cache %}
{% cache 5 'test'%}    第一个参数表示缓存时间,第二个参数是key值(取缓存的时候,需要根据key值取)
	当前时间:{{ time }}
{% endcache %}

高级用法:

前后端分离项目

# 设置值与取值
cache.set('test_data',{'name':'lqz','age':18},5)
cache.get('test_data')
posted @ 2019-07-08 15:51  Lip&Hip  阅读(94)  评论(0编辑  收藏  举报