緩存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()