設置緩存:
- 通過設置決定把數據緩存在哪裏,是數據庫中、文件系統還是在內存中
- 通過setting文件的CACHES配置來實現
- 參數TIMEOUT:緩存的默認過期時間,以秒爲單位,這個參數默認是300秒,即5分鐘;設置TIMEOUT爲None表示永遠不會過期,值設置成0造成緩存立即失效
Django自帶了一個健壯的緩存系統來保存動態頁面(緩存到本地內存中):
CACHES={
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'TIMEOUT': 60,
}
}
將cache存到redis中,默認採用1數據庫,需要安裝包並配置如下:
安裝包:pip install django-redis-cache
settings.py中配置:
CACHES = {
"default": {
"BACKEND": "redis_cache.cache.RedisCache",
"LOCATION": "localhost:6379",
'TIMEOUT': 60,
},
}
views.py中:
from django.views.decorators.cache import cache_page
from django.core.cache import cache
import random
# 視圖緩存練習 60秒過期時間
@cache_page(60)
def view_cache(request):
# 視圖緩存
return HttpResponse('hello1')
# return HttpResponse('hello2')
# 模板緩存練習
def template_cache(request):
return render(request,'template_cache.html')
# 底層的緩存API
def cache_api(request):
result = random.randrange(1,4)
if result == 1:
# 設置緩存
cache.set('key1','value',60)
print(result,cache.get('key1'))
return render(request, 'template_cache.html')
elif result == 2:
# 清空緩存
cache.clear()
print(result)
return HttpResponse('所有緩存已清理')
else:
if cache.get('key1'):
# 刪除指定的鍵key1
cache.delete('key1')
return HttpResponse('鍵key1緩存已清理')
else:
# 設置緩存
cache.set('key1', 'value', 60)
return HttpResponse('鍵key1已設置')
配置urls.py:
from django.urls import path
urlpatterns = [
# 單個view緩存
path('view_cache/', views.view_cache),
# 視圖緩存與URL無關,如果多個URL指向同一視圖,每個URL將會分別緩存
path('view_cache2/', views.view_cache),
# 模板片斷緩存
path('template_cache/', views.template_cache),
# 底層的緩存API
path('cache_api/', views.cache_api),
]
templates新建template_cache.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% load cache %}
<!--緩存時間60秒-->
{% cache 60 hello %}
模板緩存hello
<!--模板緩存hello2-->
{% endcache %}
</body>
</html>
啓動服務:
python manage.py runserver
輸入網址分別查看:
http://127.0.0.1:8000/view_cache/
http://127.0.0.1:8000/view_cache2/