django的緩存系統

  django是動態網站,通常來講客戶端向服務端發起請求,須要實時的去views執行函數,並從數據庫取出數據,再由template模板進行渲染,最後返回給客戶端,一旦訪問量增大,服務端的壓力也會變得很高;在django中對於用戶的訪問,採起設置緩存的形式,當用戶必定時間內下一次訪問相同的網站,則會返回緩存中的內容,請求就不用通過views、models和template的處理;python

一、django中自帶的一些緩存的形式:

'django.core.cache.backends.db.DatabaseCache'           # 數據庫的形式進行緩存
'django.core.cache.backends.dummy.DummyCache'           # 開發調試
'django.core.cache.backends.filebased.FileBasedCache'   # 文件進行緩存
'django.core.cache.backends.locmem.LocMemCache'         # 內存中進行緩存
'django.core.cache.backends.memcached.MemcachedCache'   # Memcache緩存(python-memcached模塊)
'django.core.cache.backends.memcached.PyLibMCCache'     # Memcache緩存(pylibmc模塊)

二、setting文件中設置:

①、利用文件進行緩存:數據庫

CACHES = {
    'default': {
     # 設置緩存的形式
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
     # 文件的保存路徑
'LOCATION': '/var/django_cache', 'TIMEOUT': 600, 'OPTIONS': { 'MAX_ENTRIES': 1000 } } }

②、利用數據庫進行緩存:django

CACHES = {
    'default': {
        # 緩存形式設置爲數據庫 
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        # 數據庫的名字  
        'LOCATION': 'cache_table_name',
        'TIMEOUT': 600,
        'OPTIONS': {
            'MAX_ENTRIES': 2000
        }
    }
}

利用數據庫的形式進行緩存,須要先建立數據庫,執行一條命令:緩存

python manage.py createcachetable cache_table_name

三、views中的設置:

# 導入緩存模塊
from
django.views.decorators.cache import cache_page # 驗證緩存 @cache_page(60 * 0.5) # 設置緩存時間 def caches(request): current_time = time.time()
   # 讀取數據並渲染到網頁中
return HttpResponse(current_time)

django緩存機制大概的理解:訪問一個網址時,嘗試去cache中檢查是否有當前網頁的緩存內容,若是網頁在緩存中,則直接從緩存中取出,返回給客戶端,不然的話,緩存中自動存儲當前訪問的頁面,以便下次使用;app

 四、設置緩存應用的位置:

①、緩存機制加到中間件裏實現全站緩存:memcached

MIDDLEWARE_CLASSES = [  
    'django.middleware.cache.UpdateCacheMiddleware', #增長 必須放最上  
  
  
    'django.middleware.cache.FetchFromCacheMiddleware', #增長 必須放最後  
]  
  
CACHE_MIDDLEWARE_ALIAS = 'default'  
CACHE_MIDDLEWARE_SECONDS = 10  # 失效的時間 秒  
CACHE_MIDDLEWARE_KEY_PREFIX = 'ValexCache'  # 區分網站  

②、單獨視圖中實現緩存機制:函數

方式一、views.py 增長裝飾器:網站

# 導入緩存模塊
from django.views.decorators.cache import cache_page


# 驗證緩存
@cache_page(60 * 0.5) # 設置緩存時間
def caches(request):
    current_time = time.time()
   # 讀取數據並渲染到網頁中
    return HttpResponse(current_time)

方式二、路由中配置使用緩存機制:url

from form_app import views
from django.views.decorators.cache import cache_page

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/', views.login, name='login'),
    # 路由中配置,cache_page(5)(views.caches), 數字爲秒
    url(r'^cache/', cache_page(5)(views.caches), name='cache'),
]

③、局部使用緩存機制:spa

a. 引入TemplateTag
    {% load cache %}

b. 使用緩存
    {% cache 5000 緩存key %}  # 5000秒
        緩存內容
    {% endcache %}
相關文章
相關標籤/搜索