1. 程式人生 > >django之頁面快取

django之頁面快取

一  全站快取(全域性快取)

在settings中配置,主要就是兩個中介軟體,需要注意的就是兩個中介軟體的前後位置

MIDDLEWARE_CLASSES = (
            ‘django.middleware.cache.UpdateCacheMiddleware’, #第一
            'django.middleware.common.CommonMiddleware',
            ‘django.middleware.cache.FetchFromCacheMiddleware’, #最後
            )
#
以秒為單位,快取事件 CACHE_MIDDLEWARE_SECONDS=10

二  單頁面快取

不需要在settings中配置,只在需要在需要快取頁面的檢視函式上加裝飾器

from django.views.decorators.cache import cache_page

# 裝飾器載入檢視函式上即可,括號中的數字為快取時間,以秒為單位

@cache_page(5)
def time(request):
    import time
    ctime = time.time()
    return render(request,'time.html
',locals())

三  頁面區域性快取

不需要在setings中配置,在需要快取的頁面的區域性中就加入一下內容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>區域性快取:
    {% load cache %}
    {#第一個引數是時間,第二個引數是別名#}
    {% cache 5 'test' %}
        {{ ctime }}
    {% endcache %}
</p> <p>沒有快取: {{ ctime }} </p> </body> </html>

四  快取的位置

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 指定快取使用的引擎
        'LOCATION': 'D:\lqz\catch',  # 指定快取的路徑
        'TIMEOUT': 300,  # 快取超時時間(預設為300秒,None表示永不過期)
        'OPTIONS': {
            'MAX_ENTRIES': 300,  # 最大快取記錄的數量(預設300)
            'CULL_FREQUENCY': 3,  # 快取到達最大個數之後,剔除快取個數的比例,即:1/CULL_FREQUENCY(預設3)
        }
    }
}