Django自學筆記之緩存

設置緩存:

  • 通過設置決定把數據緩存在哪裏,是數據庫中、文件系統還是在內存中
  • 通過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/

http://127.0.0.1:8000/template_cache/

http://127.0.0.1:8000/cache_api/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章