久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Django的緩存(1)-創(chuàng)新互聯(lián)

    最近在主要負(fù)責(zé)公司寫公司的財務(wù)核算、財務(wù)統(tǒng)計功能,同時也突擊惡補(bǔ)了一些財務(wù)方面的知識(這些都是次要的),其中最重要的一點(diǎn)是要生成一張資產(chǎn)負(fù)債表。當(dāng)然在生成資產(chǎn)負(fù)債表的時候,代碼肯定會去數(shù)據(jù)庫中查詢大量符合條件的數(shù)據(jù),然后在進(jìn)行計算得出結(jié)果,這當(dāng)中必然會影響到頁面的響應(yīng)速度(后經(jīng)測試,打開頁面要花55秒),為了提高第二次打開頁面的速度,我想到了使用緩存。下面簡單的講講django緩存相關(guān)的知識吧,由于水平有限,不足之處,敬請諒解。

創(chuàng)新互聯(lián)建站成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元內(nèi)蒙古做網(wǎng)站,已為上家服務(wù),為內(nèi)蒙古各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575

    緩存是指將需要頻繁訪問的網(wǎng)絡(luò)內(nèi)容放在離用戶較近訪問速度更快的系統(tǒng)中。緩存方案常見的有兩種,一種是客戶端,也就是web開發(fā)中的瀏覽器;一種就是服務(wù)端,以Memcached為代表。這里主要講服務(wù)端緩存。

    下面用一些為代碼來講講緩存是怎樣在動態(tài)網(wǎng)頁中工作的:

given a URL, try finding that page in the cache if the page is in the cache:     return the cached page else:     generate the page     save the generated page in the cache (for next time)     return the generated page

Django自帶了緩存系統(tǒng),為了方便起見,Django提供了不同級別的緩存粒度:可以緩存特定視圖的輸出、可以僅僅緩存那些很難生產(chǎn)出來的部分、或者你可以緩存你的整個網(wǎng)站。

一、在django中設(shè)置緩存

(1)Memcached

     按照百度上解釋,它是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高動態(tài)、數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度。Memcached基于一個存儲鍵/值對的hashmap。其守護(hù)進(jìn)程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協(xié)議與守護(hù)進(jìn)程通信

    存儲方式是memcached中保存的數(shù)據(jù)都存儲在memcached內(nèi)置的內(nèi)存存儲空間中,因此它不能取代數(shù)據(jù)庫或者文件系統(tǒng)的使用。由于數(shù)據(jù)僅存在于內(nèi)存中,因此重啟memcached、重啟操作系統(tǒng)會導(dǎo)致全部數(shù)據(jù)消失。另外,內(nèi)容容量達(dá)到指定值之后,就基于LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached本身是為緩存而設(shè)計的服務(wù)器,因此并沒有過多考慮數(shù)據(jù)的永久性問題。

    在安裝 Memcached 后, 還需要安裝 Memcached 依賴模塊。Python 有不少M(fèi)emcache模塊最為常用的是python-memcached and pylibmc兩個模塊.

ubuntu系統(tǒng)安裝命令:

sudo apt-get install memcached pip install python-memcached

    在Django中使用Memcached時:
   將 BACKEND 設(shè)置為django.core.cache.backends.memcached.MemcachedCache 或者 django.core.cache.backends.memcached.PyLibMCCache (取決于你所選綁定memcached的方式)
   將 LOCATION 設(shè)置為 ip:port 值,ip 是 Memcached 守護(hù)進(jìn)程的ip地址, port 是Memcached 運(yùn)行的端口?;蛘咴O(shè)置為 unix:path 值,path 是 Memcached Unix socket file的路徑.
     下面的例子中,Memcached 運(yùn)行再 本地 (127.0.0.1) 的11211端口,使用 python-memcached:

CACHES = {     'default': {         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',         'LOCATION': '127.0.0.1:11211',     } }下面的例子中,Memcached 通過一個本地的Unix socket file/tmp/memcached.sock 來交互,也使用python-memcached:CACHES = {     'default': {         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',         'LOCATION': 'unix:/tmp/memcached.sock',     } }

Memcached有一個非常好的特點(diǎn)就是可以讓幾個服務(wù)的緩存共享。 這就意味著你可以再幾個物理機(jī)上運(yùn)行Memcached服務(wù),這些程序?qū)堰@幾個機(jī)器當(dāng)做 同一個 緩存,從而不需要復(fù)制每個緩存的值在每個機(jī)器上。為了使用這個特性,把所有的服務(wù)地址放在LOCATION里面,用分號隔開或者當(dāng)做一個list。

CACHES = {     'default': {         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',         'LOCATION': [             '172.19.26.240:11211',             '172.19.26.242:11211',         ]     } }

(2)Databasecache

    Django 可以把緩存保存在你的數(shù)據(jù)庫里。如果你有一個快速的、專業(yè)的數(shù)據(jù)庫服務(wù)器的話那這種方式是效果最好的。
為了把數(shù)據(jù)表用來當(dāng)做你的緩存后臺:
       把BACKEND設(shè)置為django.core.cache.backends.db.DatabaseCache
       把 LOCATION 設(shè)置為 tablename, 數(shù)據(jù)表的名稱。這個名字可以是任何你想要的名字,只要它是一個合法的表名并且在你的數(shù)據(jù)庫中沒有被使用過。

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

但是在使用之前要創(chuàng)建一個緩存表

python manage.py createcachetable

如果你使用多數(shù)據(jù)庫緩存, createcachetable會在每個緩存中創(chuàng)建一個表。
如果你使用多數(shù)據(jù)庫,createcachetable會遵循你的數(shù)據(jù)庫路由中的allow_migrate()方法

像migrate, createcachetable 這樣的命令不會碰觸現(xiàn)有的表。它只創(chuàng)建非現(xiàn)有的表。

(3)文件系統(tǒng)緩存

基于文件的緩存后端序列化和存儲每個緩存值作為一個單獨(dú)的文件。 為了使用這個文件緩存,你要設(shè)置BACKEND為 "django.core.cache.backends.filebased.FileBasedCache" 并且 LOCATION 設(shè)置為一個合適的目錄。例如,把緩存儲存在 /var/tmp/django_cache,就用這個設(shè)置:

CACHES = {     'default': {         'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',         'LOCATION': '/var/tmp/django_cache',     } }

路徑應(yīng)該是絕對路徑– 也就是說,要從你的系統(tǒng)路徑開始算。你在末尾添加不添加斜杠都是無所謂的。
請確保,你的路徑指向是存在的并且,這個路徑下 你有系統(tǒng)用戶的足夠的讀,寫權(quán)限。繼續(xù)上面的例子,如果你是一個 名叫apache用戶,確保 /var/tmp/django_cache這個路徑存在并且apache有讀和寫的權(quán)力。

(4)本地緩存

這是默認(rèn)的緩存,如果你不在指定其他的緩存設(shè)置。如果你想要具有高速這個有點(diǎn)的基于內(nèi)存的緩存但是又沒有能力帶動 Memcached, 那就考慮一下本地緩存吧。

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

二、cache參數(shù)

上面的django的setting文件里的CACHES參數(shù)還可以設(shè)置一些其它的參數(shù),如下:

TIMEOUT:緩存的默認(rèn)過期時間,以秒為單位, 這個參數(shù)默認(rèn)是 300 seconds (5 分鐘).

當(dāng)設(shè)置為 None 的時候,緩存默認(rèn)永遠(yuǎn)不會過期。值設(shè)置成0造成緩存立即失效(緩存就沒有意義了)。

OPTIONS: 這個參數(shù)應(yīng)該被傳到緩存后端。有效的可選項列表根據(jù)緩存的后端不同而不同,由第三方庫所支持的緩存將會把這些選項直接配置到底層的緩存庫。

緩存的后端實現(xiàn)自己的選擇策略 將會履行下面這些選項:

MAX_ENTRIES:高速緩存允許的大條目數(shù),超出這個數(shù)則舊值將被刪除. 這個參數(shù)默認(rèn)是300.

CULL_FREQUENCY:當(dāng)達(dá)到MAX_ENTRIES 的時候,被刪除的條目比率。 實際比率是 1 / CULL_FREQUENCY, 所以設(shè)置CULL_FREQUENCY 為2會在達(dá)到MAX_ENTRIES 所設(shè)置值時刪去一半的緩存。這個參數(shù)應(yīng)該是整數(shù),默認(rèn)為 3.

把 CULL_FREQUENCY的值設(shè)置為 0 意味著當(dāng)達(dá)到MAX_ENTRIES時,緩存將被清空。某些緩存后端 (database尤其)這將以很多緩存丟失為代價,大大提高接受訪問的速度。

KEY_PREFIX:一個字符串,它將自動包括 (默認(rèn)預(yù)置) 到 Django 服務(wù)器所使用的所有緩存密鑰

VERSION:由 Django 服務(wù)器生成的緩存鍵的默認(rèn)版本號

KEY_FUNCTION:包含一個函數(shù),定義了如何將組合成一個最后的緩存鍵的前綴、 版本和鍵虛線的路徑的字符串

CACHES = {     'default': {         'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',         'LOCATION': '/var/tmp/django_cache',         'TIMEOUT': 60,         'OPTIONS': {             'MAX_ENTRIES': 1000         }     }}

上面的例子是一個文件系統(tǒng)緩存后端,緩存過期時間被設(shè)置為60秒,大條目為1000。非法的參數(shù)將會被系統(tǒng)自動忽視掉。

緩存的知識就介紹到這里,很晚了,明天再接著介紹緩存的使用吧,以上知識僅供參考,也許寫的不夠好,但知識最重要的還是應(yīng)用,只有應(yīng)用的時候才能慢慢體會它的原理以及精妙之處。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:Django的緩存(1)-創(chuàng)新互聯(lián)
鏈接URL:http://sd-ha.com/article44/hepee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、商城網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站排名、全網(wǎng)營銷推廣面包屑導(dǎo)航

廣告

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

成都網(wǎng)頁設(shè)計公司