缓存
缓存的作用
数据存储在数据库中,如果访问量过大,则需要频繁读取数据库。因此我们可以给数据做缓存,以后就从缓存中取数据,如果取不到,再查数据库。
缓存位置配置
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 %}

浙公网安备 33010602011771号