中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django使用Cache有哪些方式

發布時間:2020-08-26 09:32:50 來源:億速云 閱讀:142 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹Django使用Cache有哪些方式,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Django代碼中如何使用Cache

當你做好Cache的設置后,在代碼中你可以有三種方式使用Cache。

1.在視圖View中使用

2.在路由URLConf中使用

3.在模板中使用

在視圖View中使用cache

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

在路由URLConf中使用cache

這樣你就不用修改負責邏輯部分的view了。

from django.views.decorators.cache import cache_page
urlpatterns = [
    path('foo/<int:code>/', cache_page(60 * 15)(my_view)),
]

在模板中使用cache

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

對于大部分碼農而言,我們只需要懂得如何在django中使用cache即可,而不需要詳細了解django后臺工作原理,比如Django是如何將數據存儲到選定介質的以及django是如何判斷緩存是否已經過期的。

Django中使用Cache的高級技巧

下面我來介紹下Django中使用cache的一些高級技巧。

使用cache_control

通常用戶將會面對兩種緩存: 他或她自己的瀏覽器緩存(私有緩存)以及他或她的提供者緩存(公共緩存)。 公共緩存由多個用戶使用,而受其它人的控制。 這就產生了你不想遇到的敏感數據的問題,比如說你的銀行賬號被存儲在公眾緩存中。 因此,Web 應用程序需要以某種方式告訴緩存那些數據是私有的,哪些是公共的。

解決方案是標示出某個頁面緩存應當是私有的。 要在 Django 中完成此項工作,可使用 cache_control 視圖修飾器:

from django.views.decorators.cache import cache_control
@cache_control(private=True)
def my_view(request):
# ...

該修飾器負責在后臺發送相應的 HTTP 頭部。

還有一些其他方法可以控制緩存參數。 例如, HTTP 允許應用程序執行如下操作:

定義頁面可以被緩存的最大時間。

指定某個緩存是否總是檢查較新版本,僅當無更新時才傳遞所緩存內容。

在 Django 中,可使用 cache_control 視圖修飾器指定這些緩存參數。 在下例中, cache_control 告訴緩存對每次訪問都重新驗證緩存并在最長 3600 秒內保存所緩存版本。

from django.views.decorators.cache import cache_control
@cache_control(must_revalidate=True, max_age=3600)
def my_view(request):
# ...

在 cache_control() 中,任何合法的Cache-Control HTTP 指令都是有效的。下面是完整列表:

public=True
private=True
no_cache=True
no_transform=True
must_revalidate=True
proxy_revalidate=True
max_age=num_seconds
s_maxage=num_seconds

使用vary_on_headers

缺省情況下,Django 的緩存系統使用所請求的路徑(如blog/article/1)來創建其緩存鍵。這意味著不同用戶請求同樣路徑都會得到同樣的緩存版本,不考慮客戶端user-agent, cookie和語言配置的不同, 除非你使用Vary頭部通知緩存機制需要考慮請求頭里的cookie和語言的不同。

要在 Django 完成這項工作,可使用便利的 vary_on_headers 視圖裝飾器。例如下面代碼告訴Django讀取緩存數據時需要同時考慮User-Agent和Cookie的不同。

from django.views.decorators.vary import vary_on_headers
@vary_on_headers('User-Agent', 'Cookie')
def my_view(request):
    ...

使用never_cache禁用緩存

如果你想用頭部完全禁掉緩存, 你可以使用django.views.decorators.cache.never_cache裝飾器。如果你不在視圖中使用緩存,服務器端是肯定不會緩存的,然而用戶的客戶端如瀏覽器還是會緩存一些數據,這時你可以使用never_cache禁用掉客戶端的緩存。

from django.views.decorators.cache import never_cache
@never_cache
def myview(request):
# ...

關于Django使用Cache有哪些方式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

体育| 内黄县| 临潭县| 永州市| 富裕县| 玉环县| 东乌珠穆沁旗| 吉林市| 崇礼县| 浪卡子县| 富裕县| 太仓市| 韩城市| 隆安县| 积石山| 格尔木市| 施秉县| 恭城| 二连浩特市| 临洮县| 新沂市| 郯城县| 弥渡县| 宁陕县| 隆德县| 清原| 陕西省| 兰州市| 当雄县| 精河县| 东明县| 临海市| 韩城市| 民丰县| 南乐县| 宁安市| 西青区| 岐山县| 巴彦县| 阿克陶县| 道孚县|