缓存

缓存的作用

数据存储在数据库中,如果访问量过大,则需要频繁读取数据库。因此我们可以给数据做缓存,以后就从缓存中取数据,如果取不到,再查数据库。

 

缓存位置配置

1.默认情况,缓存到内存中

    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

 

2.缓存到文件中

CACHES = {
 'default': {
  'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #指定缓存使用的引擎
  'LOCATION': 'xxx\cache',        #指定缓存的路径
  'TIMEOUT':300,              #缓存超时时间(默认为300秒,None表示永不过期)
  'OPTIONS':{
   'MAX_ENTRIES': 300,            # 最大缓存记录的数量(默认300)
   'CULL_FREQUENCY': 3,           # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
  }
 }   
}

 

缓存的使用

1.全站缓存

在中间件首尾分别添加下面代码即可:

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
     ...... 
    'django.middleware.cache.FetchFromCacheMiddleware'
]

 

2.视图缓存

导入模块,在视图层上使用装饰器对指定视图进行缓存

from django.views.decorators.cache import cache_page

@cache_page(timeout=10)  # 缓存时间10s
def index(request):
    print('来了老弟')  # 做打印标记,如果走的是缓存,则不会打印这句话
    book_list = Book.objects.all()
    return render(request, 'books.html', {'books': book_list})

 

3.局部缓存

在模板层指定范围内做局部缓存

# 首先需要load缓存模块
{% load cache %}

# 使用方式
{% cache 10 'name' %}
    代码块
{% endcache %}

 

posted @ 2023-12-06 15:05  wellplayed  阅读(6)  评论(0)    收藏  举报