Django 框架14: 緩存

緩存python

1.緩存
    ①對於中等流量的網站來講,儘量地減小開銷是必要的。緩存數據就是爲了保存那些須要不少計算資源的結果,這樣的話就沒必要在下次重複消耗計算資源 
    ②Django自帶了一個健壯的緩存系統來保存動態頁面,避免對於每次請求都從新計算
    ③Django提供了不一樣級別的緩存粒度:能夠緩存特定視圖的輸出、能夠僅僅緩存那些很難生產出來的部分、或者能夠緩存整個網站redis

2.設置緩存
    ①經過設置決定把數據緩存在哪裏,是數據庫中、文件系統仍是在內存中
    ②經過setting文件的CACHES配置來實現
    ③參數TIMEOUT:緩存的默認過時時間,以秒爲單位,這個參數默認是300秒,即5分鐘;設置TIMEOUT爲None表示永遠不會過時,值設置成0形成緩存當即失效數據庫

CACHES={
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'TIMEOUT': 60,
    }
}

    能夠將cache存到redis中,默認採用1數據庫,須要安裝包並配置以下:  
        安裝包:django

pip install django-redis-cache
CACHES = {
    "default": {
        "BACKEND": "redis_cache.cache.RedisCache",
        "LOCATION": "localhost:6379",
        'TIMEOUT': 60,
    },
}

    能夠鏈接redis查看存的數據
        鏈接:redis-cli
        切換數據庫:select 1
        查看鍵:keys *
        查看值:get 鍵緩存

3.單個view緩存
    django.views.decorators.cache定義了cache_page裝飾器,用於對視圖的輸出進行緩存 
    示例代碼以下:網站

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def index(request):
    return HttpResponse('hello1')
    #return HttpResponse('hello2')

    cache_page接受一個參數:timeout,秒爲單位,上例中緩存了15分鐘
    視圖緩存與URL無關,若是多個URL指向同一視圖,每一個URL將會分別緩存code

4.模板片段緩存
    ①使用cache模板標籤來緩存模板的一個片斷
    ②須要兩個參數:
        緩存時間,以秒爲單位 
        給緩存片斷起的名稱 
    示例代碼以下:ip

{% load cache %}
{% cache 500 hello %}
hello1
<!--hello2-->
{% endcache %}

5.底層的緩存API內存

from django.core.cache import cache
設置:cache.set(鍵,值,有效時間)
獲取:cache.get(鍵)
刪除:cache.delete(鍵)
清空:cache.clear()
相關文章
相關標籤/搜索