W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
如果你獲得更多的控制,你也可以使用 ?cache
?模板標(biāo)簽(tag)來緩存模板片段。要使你的模板能夠訪問這個標(biāo)簽,請將 ?{% load cache %}
? 放在模板頂部。
?{% cache %}
? 模板標(biāo)簽在給定的時間里緩存片段內(nèi)容。它需要至少兩個參數(shù):緩存時效時間(以秒為單位),緩存片段的名稱。如果緩存失效時間被設(shè)置為 ?None
?,那么片段將被永久緩存。名稱不能使變量名。例如:
{% load cache %}
{% cache 500 sidebar %}
.. sidebar ..
{% endcache %}
有時你想緩存片段的多個副本,這取決于顯示在的片段內(nèi)一些動態(tài)數(shù)據(jù)。比如,你可能想為你的站點(diǎn)內(nèi)每個用戶分別獨(dú)立緩存上面例子中的使用的 sidebar 副本。通過傳遞一個或多個附加參數(shù),參數(shù)可能是帶有或不帶過濾器的變量,?{% cache %}
? 模板標(biāo)簽必須在緩存片斷中被唯一識別:
{% load cache %}
{% cache 500 sidebar request.user.username %}
.. sidebar for logged in user ..
{% endcache %}
如果 ?USE_I18N
?被設(shè)為 ?True
?,那么站點(diǎn)中間件緩存將支持多語言( respect the active language )。對于 ?cache
?模板標(biāo)簽來說,你可以使用模板中可用的特定翻譯變量之一( translation-specific variables )來達(dá)到同樣的結(jié)果:
{% load i18n %}
{% load cache %}
{% get_current_language as LANGUAGE_CODE %}
{% cache 600 welcome LANGUAGE_CODE %}
{% translate "Welcome to example.com" %}
{% endcache %}
緩存失效時間可以是模板變量,只要模板變量解析為一個整數(shù)值即可。例如,如果模板變量 ?my_timeout
?被設(shè)置成 600,那么下面兩個例子是一樣的:
{% cache 600 sidebar %} ... {% endcache %}
{% cache my_timeout sidebar %} ... {% endcache %}
這個可以避免在模板中重復(fù)。你可以在某處設(shè)置緩存失效時間,然后復(fù)用這個值。
默認(rèn)情況下,緩存標(biāo)簽會先嘗試使用名為 ?template_fragments
?的緩存。如果這個緩存不存在,它將回退使用默認(rèn)緩存。你可以選擇一個備用緩存后端與 ?using
?關(guān)鍵字參數(shù)一起使用,這個參數(shù)必須是標(biāo)簽的最后一個參數(shù)。
{% cache 300 local-thing ... using="localcache" %}
未設(shè)置指定的緩存名稱將被視為錯誤。
如果你想獲得用于緩存片段的緩存鍵,你可以使用 ?make_template_fragment_key
?。?fragment_name
?是 ?cache
?模板標(biāo)簽的第二個參數(shù);?vary_on
?是所有傳遞給標(biāo)簽的附加參數(shù)列表。這個函數(shù)可用來使緩存項(xiàng)無效或者重寫。例如:
>>> from django.core.cache import cache
>>> from django.core.cache.utils import make_template_fragment_key
# cache key for {% cache 500 sidebar username %}
>>> key = make_template_fragment_key('sidebar', [username])
>>> cache.delete(key) # invalidates cached template fragment
True
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: