緩存

一句話總結:緩存能夠對view、模板、數據進行緩存能夠設置緩存在不一樣的地方(本地內存、redis、系統文檔)能夠爲服務器節省性能、減小用戶等待時間。redis

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

設置緩存

  • 經過設置決定把數據緩存在哪裏,是數據庫中文件系統仍是在內存、或者是redis
  • 經過setting文件的CACHES配置來實現
  • 參數TIMEOUT:緩存的默認過時時間,以秒爲單位,這個參數默認是300秒,即5分鐘;設置TIMEOUT爲None表示永遠不會過時,值設置成0形成緩存當即失效
CACHES={
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', #緩存到本地內存中
        'TIMEOUT': 60,
    }
}
  • 能夠將cache存到redis中,默認採用1數據庫,須要安裝包並配置以下: 
複製代碼
安裝包:pip install django-redis-cache

CACHES 
    "default": {
        "BACKEND": "redis_cache.cache.RedisCache",  #緩存到redis中
        "LOCATION": "localhost:6379",
        'TIMEOUT': 60,
    },
} 
複製代碼
  • 能夠鏈接redis查看存的數據 
鏈接:redis-cli
切換數據庫:select 1
查看鍵:keys *
查看值:get 鍵

單個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將會分別緩存
  • 模板片段緩存

  • 使用cache模板標籤來緩存模板的一個片斷
  • 須要兩個參數:
    • 緩存時間,以秒爲單位
    • 給緩存片斷起的名稱
  • 示例代碼以下:
{% load cache %}
{% cache 500 hello %}
hello1
<!--hello2-->
{% endcache %}

底層的緩存API

from django.core.cache import cache

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