Django中緩存Cache指的是什么-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)主營新密網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),新密h5小程序定制開發(fā)搭建,新密網(wǎng)站營銷推廣歡迎新密等地區(qū)企業(yè)咨詢

小編給大家分享一下Django中緩存Cache指的是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家學(xué)習(xí),希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學(xué)習(xí)方法吧!

緩存(Cache)對(duì)于創(chuàng)建一個(gè)高性能的網(wǎng)站和提升用戶體驗(yàn)來說是非常重要的,然而對(duì)我們這種只用得起拼多多的碼農(nóng)而言最重要的是學(xué)會(huì)如何使用緩存。今天我們就來看看緩存Cache應(yīng)用場景及工作原理吧,并詳細(xì)介紹如何在Django中設(shè)置Cache并使用它們。

Django中緩存Cache指的是什么

什么是緩存Cache

緩存是一類可以更快的讀取數(shù)據(jù)的介質(zhì)統(tǒng)稱,也指其它可以加快數(shù)據(jù)讀取的存儲(chǔ)方式。一般用來存儲(chǔ)臨時(shí)數(shù)據(jù),常用介質(zhì)的是讀取速度很快的內(nèi)存。一般來說從數(shù)據(jù)庫多次把所需要的數(shù)據(jù)提取出來,要比從內(nèi)存或者硬盤等一次讀出來付出的成本大很多。對(duì)于中大型網(wǎng)站而言,使用緩存減少對(duì)數(shù)據(jù)庫的訪問次數(shù)是提升網(wǎng)站性能的關(guān)鍵之一。

為什么要使用緩存Cache

在Django中,當(dāng)用戶請(qǐng)求到達(dá)視圖后,視圖會(huì)先從數(shù)據(jù)庫提取數(shù)據(jù)放到模板中進(jìn)行動(dòng)態(tài)渲染,渲染后的結(jié)果就是用戶看到的網(wǎng)頁。如果用戶每次請(qǐng)求都從數(shù)據(jù)庫提取數(shù)據(jù)并渲染,將極大降低性能,不僅服務(wù)器壓力大,而且客戶端也無法即時(shí)獲得響應(yīng)。如果能將渲染后的結(jié)果放到速度更快的緩存中,每次有請(qǐng)求過來,先檢查緩存中是否有對(duì)應(yīng)的資源,如果有,直接從緩存中取出來返回響應(yīng),節(jié)省取數(shù)據(jù)和渲染的時(shí)間,不僅能大大提高系統(tǒng)性能,還能提高用戶體驗(yàn)。

我們來看一個(gè)實(shí)際的博客例子。每次當(dāng)我們?cè)L問首頁時(shí),下面視圖都會(huì)從數(shù)據(jù)庫中提取文章列表,并渲染的模板里去。大多數(shù)情況下,我們的博客不會(huì)更新得那么頻繁,所以文章列表是不變的。這樣用戶在一定時(shí)間內(nèi)多次訪問首頁時(shí)都從數(shù)據(jù)庫重新讀取同樣的數(shù)據(jù)是一種很大的浪費(fèi)。

from django.shortcuts import render
def index(request):
    # 讀取數(shù)據(jù)庫等并渲染到網(wǎng)頁
    article_list = Article.objects.all()
    return render(request, 'index.html', {'article_list': article_list})

使用緩存Cache就可以幫我們解決這個(gè)問題。當(dāng)用戶首次訪問博客首頁時(shí),我們從數(shù)據(jù)庫中提取文章列表,并將其存儲(chǔ)到緩存里(常用的是內(nèi)存,這取決于你的設(shè)置)。當(dāng)用戶在單位時(shí)間內(nèi)再次訪問首頁時(shí), Django先檢查緩存是否過期(本例是15分鐘), 再檢查緩存里文章列表資源是否存在,如果存在,直接從緩存中讀取數(shù)據(jù), 并渲染模板。

from django.shortcuts import render
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)  # 秒數(shù),這里指緩存 15 分鐘
def index(request):
    article_list = Article.objects.all()
    return render(request, 'index.html', {'article_list': article_list})

注意: 在Django中使用緩存前,我們必需先做必要的設(shè)置。

緩存Cache的應(yīng)用場景

緩存主要適用于對(duì)頁面實(shí)時(shí)性要求不高的頁面。存放在緩存的數(shù)據(jù),通常是頻繁訪問的,而不會(huì)經(jīng)常修改的數(shù)據(jù)。我們來舉幾個(gè)應(yīng)用例子:

1.博客文章。假設(shè)用戶一天更新一篇文章,那么可以為博客設(shè)置1天的緩存,一天后會(huì)刷新。

2.購物網(wǎng)站。商品的描述信息幾乎不會(huì)變化,而商品的購買數(shù)量需要根據(jù)用戶情況實(shí)時(shí)更新。我們可以只選擇緩存商品描述信息。

3.緩存網(wǎng)頁片段。比如緩存網(wǎng)頁導(dǎo)航菜單和腳部(Footer)。

Django緩存設(shè)置

Django中提供了多種緩存方式,如果要使用緩存,需要先在settings.py中進(jìn)行配置,然后應(yīng)用。根據(jù)緩存介質(zhì)的不同,你需要設(shè)置不同的緩存后臺(tái)Backend。

Memcached緩存

Memcached是基于內(nèi)存的緩存,Django原生支持的最快最有效的緩存系統(tǒng)。對(duì)于大多數(shù)場景,我們推薦使用Memcached,數(shù)據(jù)緩存在服務(wù)器端。使用前需要通過pip安裝memcached的插件python-memcached和pylibmc,可以同時(shí)支持多個(gè)服務(wù)器上面的memcached。

下面是使用pyhon-memcached的設(shè)置。

# localhost
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}
# unix soket
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'unix:/tmp/memcached.sock',
    }
}   
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            '172.19.26.240:11211',
            '172.19.26.242:11211',
        ]
        # 我們也可以給緩存機(jī)器加權(quán)重,權(quán)重高的承擔(dān)更多的請(qǐng)求,如下
        'LOCATION': [
            ('172.19.26.240:11211',5),
            ('172.19.26.242:11211',1),
        ]
    }
 }

數(shù)據(jù)庫緩存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }

文件系統(tǒng)緩存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',#這個(gè)是文件夾的路徑
        #'LOCATION': 'c:\foo\bar',#windows下的示例
    }
}

本地內(nèi)存緩存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake'
    }
}

以上是Django中緩存Cache指的是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

網(wǎng)頁標(biāo)題:Django中緩存Cache指的是什么-創(chuàng)新互聯(lián)
鏈接分享:http://muchs.cn/article40/phheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化云服務(wù)器、商城網(wǎng)站、小程序開發(fā)定制網(wǎng)站、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)