欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

前面介紹了緩存的一些簡單知識以及在Django中如何設(shè)置參數(shù)來配置這些緩存,現(xiàn)在講講在django中如何使用緩存。

創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計制作的專業(yè)的建站公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風(fēng)格。自公司成立以來曾獨立設(shè)計制作的站點數(shù)千家。

(1)站點級緩存

 站點級緩存指使用緩存緩存整個網(wǎng)站,需要添加兩個中間件到MIDDLEWRAE_CLASSES:django.middleware.UpdateCacheMiddleware和django.middleware.cache.FetchFromCacheMiddleware,注意的是,UpdateCache中間件一定要放在第一位,F(xiàn)etch中間件必須放最后(因為中間件的順序決定著運行的順序)見下面示例:

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
)

除了上面的設(shè)置外還需要在setting文件中增加以下設(shè)置:

CACHE_MIDDLEWARE_ALIAS:用來存儲的緩存別名

CACHE_MIDDLEWARE_SECONDS:每個頁面應(yīng)該被緩存的秒數(shù)

CACHE_MIDDLEWARE_KEY_PREFIX:關(guān)鍵的前綴,當(dāng)多個站點使用同一個配置的時候,這個可以設(shè)置可以避免發(fā)生沖突;如果你不在乎的話, 你可以是用一個空字符串,建議你別這樣做

如果請求或者響應(yīng)的頭部允許的時候,緩存中間件會緩存那些200的get或者head的相應(yīng)頁面。同一個url但是不同查詢參數(shù)會被認(rèn)為是不同的相應(yīng)從而被分別緩存。

如果你設(shè)置了CACHE_MIDDLEWARE_ANONYMOUS_ONLY為真,那么只有匿名的請求會被緩存,這是一個禁用緩存非匿名用戶頁面的最簡單的做法,注意確保已經(jīng)啟用了認(rèn)證中間件。

緩存中間件希望一個head請求可以被 一個有相同響應(yīng)頭部的get請求的響應(yīng) 響應(yīng),因為這樣的話,緩存中間件可以直接用一個get響應(yīng)返回給一個head請求。

另外,緩存中間件會自動的設(shè)置少量的頭部信息給每一個HttpResponse:

當(dāng)一個新鮮的頁面被請求的時候,會用當(dāng)前時間打上一個Last_Modified的頭部

會用當(dāng)前時間加上CACHE_MIDDLEWARE_SECONDS的值設(shè)置給Expires頭部

用CACHE_MIDDLEWARE_SECONDS的值給Cache-Control頭部去設(shè)置一個頁面的大年齡(前提是視圖函數(shù)沒有設(shè)置該項)

(2)單個view緩存

django.views.decorators.cache.cache_page()

 更加輕巧的緩存框架使用方法是對單個有效視圖的輸出進行緩存。 django.views.decorators.cache 定義了一個自動緩存視圖響應(yīng)的 cache_page裝飾器,使用非常簡單:

from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
    ....

cache_page只接受一個參數(shù)和兩個關(guān)鍵字參數(shù),

timeout是緩存時間,以秒為單位

cache:指定使用你的CACHES設(shè)置中的哪一個緩存后端

key_prefix:指定緩存前綴,可以覆蓋在配置文件中CACHE_MIDDLEWARE_KEY_PREFIX的值

和站點緩存一樣,視圖緩存與 URL 無關(guān)。如果多個 URL 指向同一視圖,每個URL將會分別緩存。  繼續(xù) my_view范例,如果 URLconf 如下所示:

urlpatterns = [
    url(r'^foo/([0-9]{1,2})/$', my_view),
]

發(fā)送到 /foo/1/ and /foo/23/ 會被分別緩存。但是一旦一個明確的 URL (e.g., /foo/23/) 已經(jīng)被請求過了, 之后再度發(fā)出的指向該 URL 的請求將使用緩存

(3)在url配置文件中使用緩存裝飾器

和上面的類似,裝飾器的位置發(fā)生了變化

from django.views.decorators.cache import cache_page

urlpatterns = ('',
    (r'^foo/(\d{1,2})/$', cache_page(60 * 15)(my_view)),
)

(4)模板片段緩存

 如果想對緩存進行更多的控制,可以使用 cache模板標(biāo)簽來緩存模板的一個片段。 要讓模板處理這個標(biāo)簽,把{% load cache %} 放在緩存片段的上面。

 標(biāo)簽{% cache %}將按給定的時間緩存包含塊中的內(nèi)容。它最少需要兩個參數(shù):緩存時間(以秒為單位);給緩存片段起的名稱。該名稱將不使能用變量。

{% load cache %}
{% cache 500 sidebar %}
    .. sidebar ..
{% endcache %}

sidebar就是要緩存的片段代碼,緩存的是這個片段。當(dāng)然也可以可以依據(jù)這個片段內(nèi)的動態(tài)內(nèi)容緩存多個版本。如上面例子中,可以給站點的每個用戶生成不同版本的sidebar緩存。只需要給 {% cache %}標(biāo)簽再傳遞一個參數(shù)來標(biāo)識區(qū)分這個緩存片段。

{% load cache %}
{% cache 500 sidebar request.user.username %}
    .. sidebar for logged in user ..
{% endcache %}

指定一個以上的參數(shù)來識別片段是一個很好的選擇,簡單的盡可能的傳遞需要的參數(shù)到{% cache %}。

(5)底層的緩存API

 有時候不想緩存一個頁面,甚至不想某個頁面的一部分,只是想緩存某個數(shù)據(jù)庫檢索的結(jié)果,django提供了底層次的API,可以是用這些API來緩存任何粒度的數(shù)據(jù),模型對象的字符串,字典,列表等等。(實際上我就是用這種方法)

 可以通過類字典對象django.core.cache.caches.訪問配置在CACHES 設(shè)置中的字典類對象。對同一線程相同的別名重復(fù)請求將返回相同的對象。

>>> from django.core.cache import caches
>>> cache1 = caches['myalias']
>>> cache2 = caches['myalias']
>>> cache1 is cache2

True

如果key不存在,就會引發(fā)一個 InvalidCacheBackendError。

  如果想了解所有的API,建議去看django\core\cache\backends目錄下的cache.py文件,這里僅僅列舉一些簡單的用法

下面是如何導(dǎo)入這個 API :

from django.core.cache import cache

基本的接口是 set(key, value, timeout_seconds) 和 get(key) :

‘hello, world!’

timeout_seconds 參數(shù)是可選的, 并且默認(rèn)為前面講過的 CACHE_BACKEND 設(shè)置中的 timeout 參數(shù).

如果對象在緩存中不存在, 或者緩存后端是不可達的, cache.get() 返回 None :

# Wait 30 seconds for ‘my_key’ to expire…

>>> cache.get(’my_key’)

None

>>> cache.get(’some_unset_key’)

None

不建議在緩存中保存 None 常量,因為你將無法區(qū)分所保存的 None 變量及由返回值 None 所標(biāo)識的緩存未中。

cache.get() 接受一個 缺省 參數(shù)。其指定了當(dāng)緩存中不存在該對象時所返回的值:

>>> cache.get(’my_key’, ‘has expired’)

‘has expired’

要想一次獲取多個緩存值,可以使用 cache.get_many() 。如果可能的話,對于給定的緩存后端, get_many() 將只訪問緩存一次,而不是對每個緩存鍵值都進行一次訪問。 get_many() 所返回的字典包括了你所請求的存在于緩存中且未超時的所有鍵值。

>>> cache.set(’a', 1)
>>> cache.set(’b', 2)
>>> cache.set(’c', 3)
>>> cache.get_many(['a', 'b', 'c'])

{’a': 1, ‘b’: 2, ‘c’: 3}

如果某個緩存關(guān)鍵字不存在或者已超時, 它將不會被包含在字典中。下面是范例的延續(xù):

>>> cache.get_many(['a', 'b', 'c', 'd'])

{’a': 1, ‘b’: 2, ‘c’: 3}

最后,你可以用 cache.delete() 顯式地刪除關(guān)鍵字。這是在緩存中清除特定對象的簡單途徑。

>>> cache.delete(’a')

cache.delete() 沒有返回值, 不管給定的緩存關(guān)鍵字對應(yīng)的值存在與否, 它都將以同樣方式工作。

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

分享名稱:Django的緩存(2)-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://aaarwkj.com/article46/iedhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站虛擬主機、品牌網(wǎng)站制作網(wǎng)頁設(shè)計公司、軟件開發(fā)網(wǎng)站導(dǎo)航

廣告

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

成都定制網(wǎng)站網(wǎng)頁設(shè)計
一区二区三区欧美久久| 国产精品一区二区三区国产| 91免费版在线观看网址| 午夜免费视频观看在线| 午夜视频在线观看免费版| 国产精品国产三级区别| 变态另类专区一区二区三区| 亚洲码av一区二区三区| 亚洲国产精品激情在线| 国内精品一区二区欧美| 亚洲免费成人一区二区| 亚洲小视频免费在线观看| 99精品热视频在线观看| 人妻激情偷乱视91九色| 久久91亚洲精品中文字幕| 亚洲综合国产一二三四五区| 欧美日韩国产另类一区二区| 亚洲天堂免费观看av| 日韩人妻中文字幕乱码一区| 在线免费观看日本91| 欧美三级在线完整版免费| 日本人妻风俗店中文字幕| 大陆av剧情网站在线观看| 精品一区二区三区在线观看国产| 日韩精品高清视频在线观看| 免费黄片视频大全在线播放| 亚洲高清有码在线观看| 日本一区二区三区日韩欧美| 国产精品日韩伦理一区二区| 亚洲欧美日韩精品av| 国产龙熟女高潮一区二区| 国产成人综合欧美日韩另类| 蜜臀av中文字幕在线| 亚洲国产精品中文字幕一区久久| 日韩精品欧美成人高清一区二区| 日日淫夜夜操熟女视频| 麻豆蜜桃精品视频在线观看| 福利一区二区在线视频| av资源在线观看少妇丰满| 尤物视频在线观看羞羞| 亚洲一区二区三区免费在线视频|