在動態網站中,用戶全部的請求,服務器都會去數據庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成用戶看到的頁面.python
當一個網站的用戶訪問量很大的時候,每一次的的後臺操做,都會消耗不少的服務端資源,因此必須使用緩存來減輕後端服務器的壓力.算法
緩存是將一些經常使用的數據保存內存或者memcache中,在必定的時間內有人來訪問這些數據時,則再也不去執行數據庫及渲染等操做,而是直接從內存或memcache的緩存中去取得數據,而後返回給用戶.數據庫
Django提供了6種緩存方式django
開發調試緩存
內存緩存
文件緩存
數據庫緩存
Memcache緩存(使用python-memcached模塊)
Memcache緩存(使用pylibmc模塊)
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載從而顯著提供網站性能,也是django中到目前爲止最有效率的可用緩存。後端
Memcached做爲一個後臺進程運行,並分配一個指定的內存量,它所作的全是提供一個添加,檢索和刪除緩存中任意數據的快速接口,全部的數據都是直接存儲在內存中,因此就沒有了數據庫或者文件系統使用的額外開銷了。緩存
工做原理:(memcache使用了多線程機制,slab分配算法)
先檢查客戶端的請求數據是否在memcached中,若有,直接把請求數據返回,再也不對數據庫進行任何操做;若是請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時在 Memcached中存一份緩存。服務器