{"title":"Creat taisce Django","version":"6.0","locale":"ga","docname":"topics/cache","url":"/ga/6.0/topics/cache/","canonical":"https://djangodocs.dev/ga/6.0/topics/cache/","summary":"Is é trádáil bhunúsach i láithreáin ghréasáin dinimiciúla, go maith, tá siad dinimiciúil. Gach uair a iarrann úsáideoir leathanach, déanann an freastalaí gréasáin…","html":"<h1>Creat taisce Django<a class=\"heading-anchor\" href=\"#django-s-cache-framework\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Is é trádáil bhunúsach i láithreáin ghréasáin dinimiciúla, go maith, tá siad dinimiciúil. Gach uair a iarrann úsáideoir leathanach, déanann an freastalaí gréasáin gach cineál ríomhanna - ó cheisteanna bunachar sonraí go rindreáil teimpléad go loighic ghnó - chun an leathanach a fheiceann cuairteoir do shuíomh a chruthú. Tá sé seo i bhfad níos costasaí, ó pheirspictíocht las-phróiseála, ná do shocrú caighdeánach freastalaí freastalaí léamh comhad lasmuigh den chóras comhaid.</p>\n<p>For most web applications, this overhead isn't a big deal. Most web\napplications aren't <code class=\"docutils literal notranslate\"><span class=\"pre\">washingtonpost.com</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">slashdot.org</span></code>; they're\nsmall-to medium-sized sites with so-so traffic. But for medium- to high-traffic\nsites, it's essential to cut as much overhead as possible.</p>\n<p>Sin an áit a dtagann caching isteach.</p>\n<p>Is é rud éigin a thaisceadh ná toradh ríofa daor a shábháil ionas nach mbeidh ort an ríomh a dhéanamh an chéad uair eile. Seo roinnt pseudocode a mhíníonn conas a oibreodh sé seo le haghaidh leathanach gréasáin a ghintear go dinimiciúil:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>given a URL, try finding that page in the cache\nif the page is in the cache:\n    return the cached page\nelse:\n    generate the page\n    save the generated page in the cache (for next time)\n    return the generated page\n</code></pre></div>\n<p>Tagann Django le córas taisce láidir a ligeann duit leathanaigh dhinimiciúla a shábháil ionas nach gá iad a ríomh do gach iarratas. Ar mhaithe le háisiúlacht, cuireann Django leibhéil éagsúla gráinneachta taisce ar fáil: Is féidir leat aschur radhairc ar leith a thaisceadh, ní féidir leat ach na píosaí atá deacair a tháirgeadh a thaisceadh, nó is féidir leat do shuíomh iomlán a thaisceadh.</p>\n<p>Oibríonn Django go maith freisin le taiscí “íossrutha”, mar shampla <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Squid`&lt; <a class=\"reference external\" href=\"http://www.squid-cache.org/\">http://www.squid-cache.org/</a>&gt; _ agus taiscí brabhsálaí-bhunaithe. Is iad seo na cineálacha taiscí nach ndéanann tú rialú go díreach ach ar féidir leat leideanna a sholáthar dóibh (trí cheanntásca HTTP) faoi na codanna de do shuíomh ba chóir a stóráil, agus conas.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">See also</p>\n<p>Míníonn an:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Fealsúnacht dearaidh Cre &lt;cache-design-philosophy&gt;at Cache <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>cúpla cinntí dearaidh an chreata.</p>\n</aside>\n<section id=\"setting-up-the-cache\">\n<span id=\"id1\"></span><h2>An taisce a chur ar bun<a class=\"heading-anchor\" href=\"#setting-up-the-cache\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Éilíonn an córas taisce méid beag socraithe. Eadhon, caithfidh tú a insint dó cá háit ar chóir go gcónaíonn do shonraí taiscéadaithe - cibé acu i mbunachar sonraí, ar an gcóras comhaid nó go díreach i gcuimhne. Is cinneadh tábhachtach é seo a théann i bhfeidhm ar fheidhmíocht do taisce; sea, tá roinnt cineálacha taisce níos gasta ná a chéile.</p>\n<p>Téann do rogha taisce sa socrú:setting: CACHES i do chomhad socruithe. Seo míniú ar na luachanna go léir atá ar fáil le haghaidh: socrú: CACHES.</p>\n<section id=\"memcached\">\n<span id=\"id2\"></span><h3>Memcached<a class=\"heading-anchor\" href=\"#memcached\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is freastalaí taisce go hiomlán bunaithe ar chuimhne é <a href=\"#id19\"><span class=\"problematic\" id=\"id20\">Memcached__</span></a>, a forbraíodh ar dtús chun ualaí arda a láimhseáil ag LiveJournal.com agus foinse oscailte ina dhiaidh sin ag Danga Interactive. Úsáideann suíomhanna mar Facebook agus Wikipedia é chun rochtain ar bhunachar sonraí a laghdú agus feidhmíocht an láithreáin a mhéadú go mór.</p>\n<p>Ritheann Memcached mar démon agus leithdháiltear méid sonraithe RAM air. Níl le déanamh aige ach comhéadan tapa a sholáthar chun sonraí sa taisce a chur leis, a aisghabháil agus a scriosadh. Stóráiltear na sonraí go léir go díreach i gcuimhne, mar sin níl aon lasbhunachar sonraí nó úsáid chórais chomhad ann.</p>\n<p>Tar éis duit Memcached féin a shuiteáil, beidh ort ceangailt Memcached a shuiteáil. Tá roinnt ceangail Python Memcached ar fáil; is iad an dá cheann a thacaíonn Django: pypi: pylibmc agus:pypi: pymemcache.</p>\n<p>Chun Memcached a úsáid le Django:</p>\n<ul class=\"simple\">\n<li><p>Socraigh: Socrú: BACKEND `go ``Django.core.cache.backends.memcached.pymemcachecache`&lt;CACHES-BACKEND&gt; nó <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.cache.backends.memcached.pylibmccache</span></code> (ag brath ar an gceangailt memcached roghnaithe agat)</p></li>\n<li><p>SOC:SET:SETING: LOCATION &lt;CACHES-LOCATION&gt;`go luachanna ``ip: port `, áit is é ip` seoladh IP an daemon Memcached agus <code class=\"docutils literal notranslate\"><span class=\"pre\">port</span></code> an calafort ar a bhfuil Memcached ag rith, nó go luach <code class=\"docutils literal notranslate\"><span class=\"pre\">unix:path</span></code>, áit is é <code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> an cosán chuig comhad soicéad Memcached Unix.</p></li>\n</ul>\n<p>Sa sampla seo, tá Memcached ag rith ar chalafort localhost (127.0.0.1) 11211, ag baint úsáide as an cheangailteach <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>pymemcache`:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.memcached.PyMemcacheCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;127.0.0.1:11211&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Sa sampla seo, tá Memcached ar fáil trí chomhad soicéad áitiúil Unix: file: /tmp/memcached.sock ag baint úsáide as an ceangailt <code class=\"docutils literal notranslate\"><span class=\"pre\">pymemcache</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.memcached.PyMemcacheCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;unix:/tmp/memcached.sock&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Gné den scoth amháin de Memcached is ea a chumas taisce a roinnt thar fhreastalaithe iolracha. Ciallaíonn sé seo gur féidir leat daemons Memcached a reáchtáil ar iliomad meaisíní, agus déileálfaidh an clár leis an ngrúpa meaisíní mar taisce* aonair*, gan gá luachanna taisce a dhúbailt ar gach meaisín. Ch &lt;CACHES-LOCATION&gt;un leas a bhaint as an ngné seo, cuir gach seoladh freastalaí san áireamh in:socrú: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>LOCATION <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>, mar shreang teoranta leath-cholún nó camóg, nó mar liosta.</p>\n<p>Sa sampla seo, roinntear an taisce thar chásanna Memcached atá ag rith ar sheoladh IP 172.19.26.240 agus 172.19.26.242, araon ar chalafort 11211:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.memcached.PyMemcacheCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>\n            <span class=\"s2\">&quot;172.19.26.240:11211&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;172.19.26.242:11211&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">],</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Sa sampla seo a leanas, roinntear an taisce thar chásanna Memcached atá ag rith ar na seoltaí IP 172.19.26.240 (calafort 11211), 172.19.26.242 (calafort 11212), agus 172.19.26.244 (calafort 11213):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.memcached.PyMemcacheCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>\n            <span class=\"s2\">&quot;172.19.26.240:11211&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;172.19.26.242:11212&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;172.19.26.244:11213&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">],</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>&lt;CACHES-OPTIONS&gt;De réir réamhshocraithe, socraíonn an cúltaca PymemCacheCache` na roghanna seo a leanas (is féidir leat iad a shárú i d:setting: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>OPTIONS <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"s2\">&quot;OPTIONS&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;allow_unicode_keys&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;default_noreply&quot;</span><span class=\"p\">:</span> <span class=\"kc\">False</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;serde&quot;</span><span class=\"p\">:</span> <span class=\"n\">pymemcache</span><span class=\"o\">.</span><span class=\"n\">serde</span><span class=\"o\">.</span><span class=\"n\">pickle_serde</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Pointe deiridh faoi Memcached ná go bhfuil míbhuntáiste ag taiscáil cuimhne bunaithe: toisc go stóráiltear na sonraí taisceáilte i gcuimhne, caillfear na sonraí má thimpíonn do fhreastalaí. Is léir nach bhfuil cuimhne beartaithe le haghaidh stórála sonraí buan, mar sin ná bí ag brath ar chaching cuimhne mar an t-aon stóráil sonraí atá agat. Gan amhras, níor cheart <em>aon cheann</em> de na cúltaca caching Django a úsáid le haghaidh stórála buan - tá sé beartaithe go léir a bheith ina réitigh le haghaidh taiscéála, ní stóráil - ach cuirimid é seo in iúl anseo toisc go bhfuil caching bunaithe ar chuimhne go háirithe sealadach.</p>\n</section>\n<section id=\"redis\">\n<span id=\"id4\"></span><h3>Redis<a class=\"heading-anchor\" href=\"#redis\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is bunachar sonraí in-chuimhne é <a href=\"#id19\"><span class=\"problematic\" id=\"id21\">Redis__</span></a> is féidir a úsáid le haghaidh taiscála. Chun tús a chur beidh freastalaí Redis ag teastáil uait ag rith go háitiúil nó ar mheaisín iargúlta.</p>\n<p>Tar éis duit an freastalaí Redis a bhunú, beidh ort ceangail Python a shuiteáil do Redis. :pypi: Is é <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>redis-py &lt;redis&gt;`an ceangailt a thacaíonn Django go dúchasach. &lt;hiredis&gt;Moltar an pacáiste: pypi: <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>hiredis-py <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>a shuiteáil freisin.</p>\n<p>Chun Redis a úsáid mar do chúltaca taisce le Django:</p>\n<ul class=\"simple\">\n<li><p>&lt;CACHES-BACKEND&gt;Socraigh: socrú: BACKEND `go ``Django.Core.Cache.Backends.Redis.RedisCache `.</p></li>\n<li><p>Set <a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHES-LOCATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOCATION</span></code></a> to the URL pointing to your Redis\ninstance, using the appropriate scheme. See the <code class=\"docutils literal notranslate\"><span class=\"pre\">redis-py</span></code> docs for\n<a class=\"reference external\" href=\"https://redis.readthedocs.io/en/stable/connections.html#redis.connection.ConnectionPool.from_url\">details on the available schemes</a>.</p></li>\n</ul>\n<p>Mar shampla, má tá Redis ag rith ar chalafort localhost (127.0.0.1) 6379:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.redis.RedisCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;redis://127.0.0.1:6379&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Is minic a chosnaítear freastalaithe Redis le fíordheimhniú. D'fhonn ainm úsáideora agus pasfhocal a sholáthar, cuir iad sa SUÍOMH` mar aon leis an URL:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.redis.RedisCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;redis://username:password@127.0.0.1:6379&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Má tá iolracha freastalaithe Redis curtha ar bun agat sa mhodh macasamhail, is féidir leat na freastalaithe a shonrú mar shreang teoranta leath-cholún nó camóg, nó mar liosta. Agus freastalaithe iolracha á úsáid agat, déantar oibríochtaí scríofa ar an gcéad fhreastalaí (ceannaire) Déantar oibríochtaí léite ar na freastalaithe eile (macasamhail) a roghnaítear go randamach:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.redis.RedisCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>\n            <span class=\"s2\">&quot;redis://127.0.0.1:6379&quot;</span><span class=\"p\">,</span>  <span class=\"c1\"># leader</span>\n            <span class=\"s2\">&quot;redis://127.0.0.1:6378&quot;</span><span class=\"p\">,</span>  <span class=\"c1\"># read-replica 1</span>\n            <span class=\"s2\">&quot;redis://127.0.0.1:6377&quot;</span><span class=\"p\">,</span>  <span class=\"c1\"># read-replica 2</span>\n        <span class=\"p\">],</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n</section>\n<section id=\"database-caching\">\n<span id=\"id6\"></span><h3>Cacháil bunachar sonraí<a class=\"heading-anchor\" href=\"#database-caching\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is féidir le Django a chuid sonraí taiscéadaithe a stóráil i do bhunachar sonraí. Oibríonn sé seo is fearr má tá freastalaí bunachar sonraí tapa, innéacsaithe go maith agat.</p>\n<p>Chun tábla bunachar sonraí a úsáid mar do chúltaca taisce:</p>\n<ul class=\"simple\">\n<li><p>&lt;CACHES-BACKEND&gt;Socraigh: socrú: BACKEND `go ``Django.core.cache.backends.db.databaseCache `</p></li>\n<li><p>Socraigh: socrú: LOCATION &lt;CACHES-LOCATION&gt;`go ``tablename`, ainm an tábla bunachar sonraí. Is féidir leis an ainm seo a bheith cibé rud is mian leat, fad is ainm tábla bailí é nach bhfuil á úsáid cheana féin i do bhunachar sonraí.</p></li>\n</ul>\n<p>Sa sampla seo, is é my_cache_table` ainm an tábla taisce:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.db.DatabaseCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;my_cache_table&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Murab ionann agus cúltaca taisce eile, ní thacaíonn taisce an bhunachar sonraí le cur isteach in éag go huathoibríoch ag leibhéal an bhunachar sonraí. Ina áit sin, déantar iontrálacha taisce in éag a scriosadh gach uair a thugtar <code class=\"docutils literal notranslate\"><span class=\"pre\">add</span> <span class=\"pre\">()</span> <span class=\"pre\">``,</span> <span class=\"pre\">`set</span> <span class=\"pre\">()</span></code>, nó <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>touch () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n<section id=\"creating-the-cache-table\">\n<span id=\"database-caching-creating-the-table\"></span><h4>An tábla taisce a chruthú<a class=\"heading-anchor\" href=\"#creating-the-cache-table\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Sula n-úsáidtear taisce an bunachar sonraí, ní mór duit an tábla taisce a chruthú leis an ordú seo:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>createcachetable\n</code></pre></div>\n<p>Cruthaíonn sé seo tábla i do bhunachar sonraí atá san fhormáid cheart a bhfuil súil ag córas taisce bunachar sonraí Django. &lt;CACHES-LOCATION&gt;Tógtar ainm an tábla ó:socrú: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>SUÍOMH <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n<p>Má tá iolracha bunachar sonraí á úsáid agat, cruthaíonn: djadmin: createcachetable tábla amháin do gach taisce.</p>\n<p>Má tá bunachar sonraí iolracha á úsáid agat, breathnaíonn: djadmin: createcachetable modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>allow_migration () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ar do ródairí bunachar sonraí (féach thíos).</p>\n<p>Mar shampla: Djadmin: migrate, :djadmin: ní dhéanfaidh createcachetable teagmháil le tábla atá ann cheana. Ní chruthóidh sé ach táblaí ar iarraidh.</p>\n<p>Chun an SQL a reáchtálfaí a phriontáil, seachas é a reáchtáil, bain úsáid as an roghna:option: createcachetable --dry-run.</p>\n</section>\n<section id=\"multiple-databases\">\n<span id=\"database-caching-multiple-databases\"></span><h4>Bunachair sonraí iliom<a class=\"heading-anchor\" href=\"#multiple-databases\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Má úsáideann tú táscáil bunachar sonraí le bunachair sonraí iolracha, beidh ort treoracha ródaithe a chur ar bun do thábla taisce bunachar sonraí freisin. Chun críocha ródaithe, tá tábla taisce an bhunachar sonraí le feiceáil mar mhúnla darb ainm <code class=\"docutils literal notranslate\"><span class=\"pre\">cacheentry`,</span> <span class=\"pre\">i</span> <span class=\"pre\">bhfeidhmchlár</span> <span class=\"pre\">darb</span> <span class=\"pre\">ainm</span> <span class=\"pre\">``django_cache</span></code>. Ní bheidh an tsamhail seo le feiceáil i taisce na samhlacha, ach is féidir sonraí an tsamhail a úsáid chun críocha ródaithe.</p>\n<p>Mar shampla, threoródh an ródaire seo a leanas gach oibríocht léite taisce chuig <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_replica</span></code>, agus scríobhfadh gach oibríocht chuig cache_primary`. Ní dhéanfar an tábla taisce a shioncronú ach ar cache_primary`:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CacheRouter</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;A router to control all database cache operations&quot;&quot;&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_for_read</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">model</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">hints</span><span class=\"p\">):</span>\n        <span class=\"s2\">&quot;All cache read operations go to the replica&quot;</span>\n        <span class=\"k\">if</span> <span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">app_label</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;django_cache&quot;</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"s2\">&quot;cache_replica&quot;</span>\n        <span class=\"k\">return</span> <span class=\"kc\">None</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">db_for_write</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">model</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">hints</span><span class=\"p\">):</span>\n        <span class=\"s2\">&quot;All cache write operations go to primary&quot;</span>\n        <span class=\"k\">if</span> <span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">app_label</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;django_cache&quot;</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"s2\">&quot;cache_primary&quot;</span>\n        <span class=\"k\">return</span> <span class=\"kc\">None</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">allow_migrate</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">db</span><span class=\"p\">,</span> <span class=\"n\">app_label</span><span class=\"p\">,</span> <span class=\"n\">model_name</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">hints</span><span class=\"p\">):</span>\n        <span class=\"s2\">&quot;Only install the cache model on primary&quot;</span>\n        <span class=\"k\">if</span> <span class=\"n\">app_label</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;django_cache&quot;</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">db</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;cache_primary&quot;</span>\n        <span class=\"k\">return</span> <span class=\"kc\">None</span>\n</code></pre></div>\n<p>Mura sonraíonn tú treoracha ródaithe don tsamhail taisce bunachar sonraí, úsáidfidh an cúltaca taisce an bunachar sonraí <code class=\"docutils literal notranslate\"><span class=\"pre\">réamhshocraithe</span></code>.</p>\n<p>Agus mura n-úsáideann tú cúltaca taisce an bhunachar sonraí, ní gá duit a bheith buartha faoi threoracha ródaithe a sholáthar don tsamhail taisce bunachar sonraí.</p>\n</section>\n</section>\n<section id=\"filesystem-caching\">\n<span id=\"id7\"></span><h3>Caching chórais comhaid<a class=\"heading-anchor\" href=\"#filesystem-caching\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Déanann an cúltaca comhad-bhunaithe gach luach taisce a shraitheadh agus a stóráil mar chomhad ar leithligh. &lt;CACHES-LOCATION&gt;Chun an tacar cúltaca seo a úsáid: socrú: BACKEND `go ``&lt;CACHES-BACKEND&gt;&quot;django.core.cache.backends.fileBasedCache&quot;` agus:setting: LOCATION chuig eolaire oiriúnach. Mar shampla, chun sonraí taisceáilte a stóráil i <code class=\"docutils literal notranslate\"><span class=\"pre\">/var/tmp/django_cache</span></code>, bain úsáid as an socrú seo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.filebased.FileBasedCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;/var/tmp/django_cache&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Má tá tú ar Windows, cuir an litir tiomána ag tús an chosáin, mar seo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.filebased.FileBasedCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;c:/foo/bar&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Ba chóir go mbeadh an cosán eolaire iomlán - is é sin, ba chóir go dtosódh sé ag fréamh do chóras comhaid. Is cuma an gcuireann tú slash ag deireadh an shocraithe.</p>\n<p>Déan cinnte go bhfuil an eolaire a luaitear ag an socrú seo ann agus go bhfuil sé inléite agus inscríofa, nó gur féidir le húsáideoir an chórais faoina ritheann do fhreastalaí gréasáin é a chruthú. Ag leanúint leis an sampla thuas, má ritheann do fhreastalaí mar an úsáideoir <code class=\"docutils literal notranslate\"><span class=\"pre\">apache</span></code>, déan cinnte go bhfuil an eolaire <code class=\"docutils literal notranslate\"><span class=\"pre\">/var/tmp/django_cache</span></code> ann agus go bhfuil sé inléite agus inscríofa ag an úsáideoir <code class=\"docutils literal notranslate\"><span class=\"pre\">apache</span></code>, nó gur féidir leis an úsáideoir <code class=\"docutils literal notranslate\"><span class=\"pre\">apache</span></code> é a chruthú.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p>Nuair a bhíonn an cache:setting: LOCATION `laistigh de: setting: &lt;CACHES-LOCATION&gt;MEDIA_ROOT`, :setting: STATIC_ROOT, nó: setting: STATICFILES_FINDERS, féadfar sonraí íogaire a nochtadh.</p>\n<p>Ní amháin gur féidir le hionsaitheoir a fhaigheann rochtain ar an gcomhad taisce ábhar HTML a fhalsú, a mbeidh muinín ag do shuíomh, ach cód treallach a fhorghníomhú go cianda freisin, toisc go ndéantar na sonraí a shraitheadh ag baint úsáide:mod: pickle.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p>D'fhéadfadh go mbeadh cúisceáil chórais chomhad mall nuair a stóráiltear líon mór comhaid. Má théann tú isteach sa fhadhb seo, smaoinigh ar mheicníocht caching difriúil a úsáid. &lt;django/core/cache/backends/filebased.py&gt;Is féidir leat fo-aicme freisin: source: FileBasedCache agus an straitéis chailliúcháin a fheabhsú.</p>\n</aside>\n</section>\n<section id=\"local-memory-caching\">\n<span id=\"id8\"></span><h3>Cacháil cuimhne áitiúil<a class=\"heading-anchor\" href=\"#local-memory-caching\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is é seo an taisce réamhshocraithe mura sonraítear ceann eile i do chomhad socruithe. Más mian leat na buntáistí luais a bhaineann le caching in-chuimhne ach nach bhfuil an cumas agat Memcached a reáchtáil, smaoinigh ar an gcúltaca taisce cuimhne áitiúil. Tá an taisce seo in aghaidh an phróisis (féach thíos) agus sábháilte ó snáithe. &lt;CACHES-BACKEND&gt;Chun é a úsáid, socraí:setting: BACKEND `go `&quot;django.core.cache.backends.locmem.locmemcache&quot;<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.locmem.LocMemCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;unique-snowflake&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Úsáidtear an cache:setting: LOCATION &lt;CACHES-LOCATION&gt;`chun siopaí cuimhne aonair a aithint. Mura bhfuil ach taisce ``locmem` amháin agat, is féidir leat an:setting: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>LOCATION <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>a fhágáil&lt;CACHES-LOCATION&gt;; áfach, má tá níos mó ná taisce cuimhne áitiúil amháin agat, beidh ort ainm a shannadh do cheann acu ar a laghad d'fhonn iad a choinneáil ar leithligh.</p>\n<p>Úsáideann an taisce straitéis díothaithe is lú a úsáidtear le déanaí (LRU).</p>\n<p>Tabhair faoi deara go mbeidh a shampla taisce príobháideach féin ag gach próiseas, rud a chiallaíonn nach féidir aon chaching trasphróisis a dhéanamh. Ciallaíonn sé seo freisin nach bhfuil an taisce cuimhne áitiúil go háirithe éifeachtach ó chuimhne, mar sin is dócha nach rogha maith é do thimpeallachtaí táirgeachta. Tá sé go deas le haghaidh forbartha.</p>\n</section>\n<section id=\"dummy-caching-for-development\">\n<span id=\"dummy-caching\"></span><h3>Caching dummy (le haghaidh forbartha)<a class=\"heading-anchor\" href=\"#dummy-caching-for-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Faoi dheireadh, tagann Django le taisce “dummy” nach ndéanann taisce i ndáiríre - ní chuireann sé ach an comhéadan taisce i bhfeidhm gan aon rud a dhéanamh.</p>\n<p>Tá sé seo úsáideach má tá suíomh táirgeachta agat a úsáideann taiscáil tromshaothair in áiteanna éagsúla ach timpeallacht forbarta/tástála nach dteastaíonn uait taisce a dhéanamh agus nach dteastaíonn uait do chód a athrú go speisialta an dara ceann. &lt;CACHES-BACKEND&gt;Chun caching dummy a ghníomhachtú, socraí:setting: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>BACKEND <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>mar sin:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.dummy.DummyCache&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n</section>\n<section id=\"using-a-custom-cache-backend\">\n<span id=\"id9\"></span><h3>Úsáid cúltaca taisce saincheaptha<a class=\"heading-anchor\" href=\"#using-a-custom-cache-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cé go gcuimsíonn Django tacaíocht do roinnt cúltaca taisce lasmuigh den bhosca, uaireanta b'fhéidir gur mhaith leat cúltaca taisce saincheaptha a úsáid. Chun cúltaca taisce seachtrach a úsáid le Django, bain úsáid as an gcosán allmhairithe Python mar an:setting: BACKEND `den socrú: `CACHES&lt;CACHES-BACKEND&gt;, mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;path.to.backend&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Má tá do chúlcheann féin á thógáil agat, is féidir leat na cúltaca caighdeánacha taisce a úsáid mar chur i bhfeidhm tagartha. Gheobhaidh tú an cód san eolaire: source: django/core/cache/backends/ foinse Django.</p>\n<p>Nóta: Gan cúis an-láidir, mar óstach nach dtacaíonn leo, ba chóir duit cloí leis na cúltaca taisce atá san áireamh le Django. Rinneadh tástáil mhaith orthu agus tá siad doiciméadaithe go maith.</p>\n</section>\n<section id=\"cache-arguments\">\n<span id=\"id10\"></span><h3>Argóintí taisce<a class=\"heading-anchor\" href=\"#cache-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is féidir argóintí breise a thabhairt do gach cúltaca taisce chun iompar taisce a rialú. Cuirtear na hargóintí seo ar fáil mar eochracha breise sa socrú: socrú: CACHES. Is iad seo a leanas argóintí bailí:</p>\n<ul>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHES-TIMEOUT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIMEOUT</span></code></a>: The default timeout, in\nseconds, to use for the cache. This argument defaults to <code class=\"docutils literal notranslate\"><span class=\"pre\">300</span></code> seconds\n(5 minutes). You can set <code class=\"docutils literal notranslate\"><span class=\"pre\">TIMEOUT</span></code> to <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> so that, by default, cache\nkeys never expire. A value of <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code> causes keys to immediately expire\n(effectively &quot;don't cache&quot;).</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHES-OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">OPTIONS</span></code></a>: Any options that should be\npassed to the cache backend. The list of valid options will vary\nwith each backend, and cache backends backed by a third-party library\nwill pass their options directly to the underlying cache library.</p>\n<p>Déanfaidh cúltaca taisce a chuireann a straitéis díothaithe féin i bhfeidhm (ie, na cúltaca <code class=\"docutils literal notranslate\"><span class=\"pre\">locmem</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">córas</span> <span class=\"pre\">comhad</span> <span class=\"pre\">``agus</span> <span class=\"pre\">``bunachar</span> <span class=\"pre\">sonraí</span></code>) onóir na roghanna seo a leanas:</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MAX_ENTRIES</span></code>: An líon uasta na n-iontrálacha a cheadaítear sa taisce sula scriostar seanluachanna. Tá an argóint seo réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">300</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">CULL_FREQUENCY</span></code>: An codán na n-iontrálacha a dhíothaítear nuair a shroichtear <code class=\"docutils literal notranslate\"><span class=\"pre\">MAX_ENTRIES</span></code>. Is é an cóimheas iarbhír ná <code class=\"docutils literal notranslate\"><span class=\"pre\">1/CULL_FREQUENCY</span></code>, mar sin socraigh <code class=\"docutils literal notranslate\"><span class=\"pre\">CULL_FREQUENCY</span></code> go <code class=\"docutils literal notranslate\"><span class=\"pre\">2</span></code> chun leath na n-iontrálacha a scriosadh nuair a shroichtear <code class=\"docutils literal notranslate\"><span class=\"pre\">MAX_ENTRIES</span> <span class=\"pre\">``.</span> <span class=\"pre\">Ba</span> <span class=\"pre\">chóir</span> <span class=\"pre\">go</span> <span class=\"pre\">mbeadh</span> <span class=\"pre\">an</span> <span class=\"pre\">argóint</span> <span class=\"pre\">seo</span> <span class=\"pre\">ina</span> <span class=\"pre\">shláimhir</span> <span class=\"pre\">agus</span> <span class=\"pre\">réamhshocraithe</span> <span class=\"pre\">go</span> <span class=\"pre\">``3</span></code>.</p>\n<p>Ciallaíonn luach <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code> do CULL_FREQUENCY` go ndéanfar an taisce iomlán a dumpáil nuair a shroichfear <code class=\"docutils literal notranslate\"><span class=\"pre\">MAX_ENTRIES</span></code>. Ar roinnt cúltaca (<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>bunachar sonraí <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>go háirithe) déanann sé seo go gcaithfeach* i bhfad níos gasta ar chostas níos mó caitheamh taisce.</p>\n</li>\n</ul>\n<p>Cuireann cúltaca Memcached agus Redis ábhar: socrú: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>OPTIONS &lt;CACHES-OPTIONS&gt;`mar argóintí eochairfhocal chuig tógálaí na gcliant, rud a cheadaíonn rialú níos airde ar iompar cliant. Mar shampla úsáid, féach thíos.</p>\n</li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHES-KEY_PREFIX\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">KEY_PREFIX</span></code></a>: A string that will be\nautomatically included (prepended by default) to all cache keys\nused by the Django server.</p>\n<p>Féach na:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>cáipéisíocht taiscéala &lt;cache_key_prefixing&gt;`le haghaidh tuilleadh faisnéise.</p>\n</li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHES-VERSION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">VERSION</span></code></a>: The default version number\nfor cache keys generated by the Django server.</p>\n<p>Féach na:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>cáipéisíocht taiscéala &lt;cache_versioning&gt;`le haghaidh tuilleadh faisnéise.</p>\n</li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHES-KEY_FUNCTION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">KEY_FUNCTION</span></code></a>\nA string containing a dotted path to a function that defines how\nto compose a prefix, version and key into a final cache key.</p>\n<p>Féach na:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>cáipéisíocht taiscéala &lt;cache_key_transformation&gt;`le haghaidh tuilleadh faisnéise.</p>\n</li>\n</ul>\n<p>Sa sampla seo, tá cúltaca córas comhaid á chumrú le haon ama 60 soicind, agus cumas uasta 1000 mír:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.filebased.FileBasedCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;/var/tmp/django_cache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;TIMEOUT&quot;</span><span class=\"p\">:</span> <span class=\"mi\">60</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;OPTIONS&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s2\">&quot;MAX_ENTRIES&quot;</span><span class=\"p\">:</span> <span class=\"mi\">1000</span><span class=\"p\">},</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Seo cumraíocht shampla le haghaidh cúltaca bunaithe ar pylibmc a chumasaíonn an prótacal dénártha, fíordheimhniú SASL, agus an modh iompraíochta ketama:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.memcached.PyLibMCCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;127.0.0.1:11211&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;OPTIONS&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;binary&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;username&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;user&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;password&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;pass&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;behaviors&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n                <span class=\"s2\">&quot;ketama&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n            <span class=\"p\">},</span>\n        <span class=\"p\">},</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Seo cumraíocht shamplach le haghaidh cúltaca bunaithe ar pymemcache a chuireann ar chumas comhdhlúthú cliant (a d'fhéadfadh feidhmíocht a fheabhsú trí chliaint a choinneáil ceangailte), déileálann sé le hearráidí memcache/líonra mar chailleann taisce, agus socraíonn an bratach <code class=\"docutils literal notranslate\"><span class=\"pre\">TCP_NODELAY</span></code> ar soicéad an nasc:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.memcached.PyMemcacheCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;127.0.0.1:11211&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;OPTIONS&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;no_delay&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;ignore_exc&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;max_pool_size&quot;</span><span class=\"p\">:</span> <span class=\"mi\">4</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;use_pooling&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"p\">},</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Seo cumraíocht shampla le haghaidh cúltaca bunaithe ar <code class=\"docutils literal notranslate\"><span class=\"pre\">redis</span></code> a roghnaíonn bunachar sonraí <code class=\"docutils literal notranslate\"><span class=\"pre\">`10</span></code> (de réir réamhshocraithe loingíonn Redis le 16 bhunachar sonraí loighciúla), agus a leagann saincheaptha <a class=\"reference external\" href=\"https://github.com/redis/redis-py#connection-pools\">rang linn nasc</a> (<code class=\"docutils literal notranslate\"><span class=\"pre\">Redis.connectionPool</span></code> úsáidtear de réir réamhshocraithe):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">CACHES</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.core.cache.backends.redis.RedisCache&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;LOCATION&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;redis://127.0.0.1:6379&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;OPTIONS&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;db&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;10&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;pool_class&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;redis.BlockingConnectionPool&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">},</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"the-per-site-cache\">\n<span id=\"id11\"></span><h2>An taisce in aghaidh an láithreáin<a class=\"heading-anchor\" href=\"#the-per-site-cache\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Nuair a bheidh an taisce curtha ar bun, is é an bealach is simplí chun caching a úsáid ná do shuíomh iomlán a thaisceadh. Beidh ort <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>django.middleware.cache.UpdateCacheMiddleware'` agus <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>django.middleware.cache.fetchfromCacheMiddleware'` a chur le do shuíomh: MIDDLEWARE, mar atá sa sampla seo:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">MIDDLEWARE</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"s2\">&quot;django.middleware.cache.UpdateCacheMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.middleware.common.CommonMiddleware&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;django.middleware.cache.FetchFromCacheMiddleware&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Níl, ní clóscríobh é sin: caithfidh an middleware “nuashonrú” a bheith ar dtús ar an liosta, agus caithfidh an middleware “faigh” a bheith deireanach. Tá na sonraí beagán doiléir, ach féach <a class=\"reference internal\" href=\"#order-of-middleware\">Ordú MIDDLEWARE</a> thíos más mian leat an scéal iomlán.</p>\n</aside>\n<p>Ansin, cuir na socruithe riachtanacha seo a leanas le do chomhad socruithe Django:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHE_MIDDLEWARE_ALIAS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHE_MIDDLEWARE_ALIAS</span></code></a> -- The cache alias to use for storage.</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHE_MIDDLEWARE_SECONDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHE_MIDDLEWARE_SECONDS</span></code></a> -- The integer number of seconds each\npage should be cached.</p></li>\n<li><p><a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHE_MIDDLEWARE_KEY_PREFIX\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHE_MIDDLEWARE_KEY_PREFIX</span></code></a> -- If the cache is shared across\nmultiple sites using the same Django installation, set this to the name of\nthe site, or some other string that is unique to this Django instance, to\nprevent key collisions. Use an empty string if you don't care.</p></li>\n</ul>\n<p>Tugann <code class=\"docutils literal notranslate\"><span class=\"pre\">Fetchfromcachemiddleware</span></code> freagraí GET agus HEAD le stádas 200, nuair a cheadaíonn na ceannteidil iarratais agus freagartha. Meastar gur leathanaigh uathúla iad freagraí ar iarratais ar an URL céanna le paraiméadair cheisteanna éagsúla agus cuirtear iad a chosc ar leithligh Tá an middleware seo ag súil go bhfreagraítear iarratas HEAD leis na ceannteidil freagartha céanna leis an iarratas GET comhfhreagrach; sa chás sin féadfaidh sé freagra GET a chosaithe ar iarratas HEAD a thabhairt ar ais.</p>\n<p>&lt;downstream-caches&gt;Ina theannta sin, socraíonn <code class=\"docutils literal notranslate\"><span class=\"pre\">UpdateCacheMiddleware</span></code> cúpla ceannteideal go huathoibríoch i ngach:class: ~django.http.httpResponse a théann i bhfeidh:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>caches downstream <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>:</p>\n<ul class=\"simple\">\n<li><p>Socraíonn an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Expires</span></code> go dtí an dáta/am reatha móide an sainmhínithe:setting: CACHE_MIDDLEWARE_SECONDS.</p></li>\n<li><p>Socraíonn sé an ceanntásc <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code> chun aoise uasta a thabhairt don leathanach -- arís, ón socrú:setting: CACHE_MIDDLEWARE_SECONDS.</p></li>\n</ul>\n<p>Féach: doc: /topics/http/middleware le haghaidh tuilleadh ar middleware.</p>\n<p>Má shocraíonn amharc a chuid ama éaga taisce féin (ie tá rannán <code class=\"docutils literal notranslate\"><span class=\"pre\">max-aos</span></code> aige ina cheanntásc <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code>) ansin déanfar an leathanach a stóráil go dtí an t-am éaga, seach:setting: CACHE_MIDDLEWARE_SECONDS. Ag baint úsáide as na maisitheoirí i django.views.decorators.cache` is féidir leat am éaga amharc a shocrú go héasca (ag baint úsáide as:func: ~django.views.decorators.cache.cache_control decorator) nó díchumasú a chaching le haghaidh amharc (ag baint úsáide as an: func: ~django.decorators.cache.neverator _cache). Féach an chuid <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>ceannteidil eile a úsáid <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>__ le haghaidh tuilleadh eolais faoi na maisitheoirí seo.</p>\n<p id=\"i18n-cache-key\">&lt;language code&gt;Más rud é: Socrú: USE_I18N socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ansin beidh ainm an ghníomhaí:term: language `san eochair taisce a ghintear san eochair taisce ginte -- féach freis:ref: `how django-discovers-language-preference). Ligeann sé seo duit suíomhanna ilteangacha a thaisceadh go héasca gan an eochair taisce a chruthú tú féin.</p>\n<p>Cuimsíonn eochracha taisce an: ref: crios ama reatha `nuai:setting: `USE &lt;default-current-time-zone&gt;_TZ socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</section>\n<section id=\"the-per-view-cache\">\n<h2>An taisce in aghaidh an amharc<a class=\"heading-anchor\" href=\"#the-per-view-cache\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.views.decorators.cache.cache_page\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.decorators.cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">cache_page</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timeout</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">cache</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key_prefix</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.decorators.cache.cache_page\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Bealach níos gráinneach chun an creat taiscéála a úsáid ná aschur tuairimí aonair a chaitheamh. Sainmhíníonn <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views.decorators.cache</span></code> maisitheoir <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code> a thaisceoidh freagra an amharc duit go huathoibríoch:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache_page</span>\n\n\n<span class=\"nd\">@cache_page</span><span class=\"p\">(</span><span class=\"mi\">60</span> <span class=\"o\">*</span> <span class=\"mi\">15</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Tógann <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code> argóint amháin: an t-am taisce, i soicindí. Sa sampla thuas, déanfar toradh an radharc <code class=\"docutils literal notranslate\"><span class=\"pre\">my_view</span> <span class=\"pre\">()</span> <span class=\"pre\">`a</span> <span class=\"pre\">stóráil</span> <span class=\"pre\">ar</span> <span class=\"pre\">feadh</span> <span class=\"pre\">15</span> <span class=\"pre\">nóiméad.</span> <span class=\"pre\">(Tabhair</span> <span class=\"pre\">faoi</span> <span class=\"pre\">deara</span> <span class=\"pre\">go</span> <span class=\"pre\">bhfuil</span> <span class=\"pre\">sé</span> <span class=\"pre\">scríofa</span> <span class=\"pre\">againn</span> <span class=\"pre\">mar</span> <span class=\"pre\">`60*</span> <span class=\"pre\">15</span></code> chun críche inléiteachta. Meastófar <code class=\"docutils literal notranslate\"><span class=\"pre\">60*</span> <span class=\"pre\">15</span></code> go 900` - is é sin, 15 nóiméad iolraithe le 60 soicind in aghaidh an nóiméid.)</p>\n<p>Tá tosaíocht ag an am taisce atá leagtha síos ag cache_page` thar an treoir <code class=\"docutils literal notranslate\"><span class=\"pre\">max-aois</span> <span class=\"pre\">``ón</span> <span class=\"pre\">gceannteideal</span> <span class=\"pre\">``Cache-Control</span></code>.</p>\n<p>Cuirtear an taisce in aghaidh an amharc, cosúil leis an taisce in aghaidh an láithreáin, as an URL. Má thaispeánann URLanna iolracha ar an radharc céanna, déanfar gach URL a stóráil ar leithligh. Ag leanúint leis an sampla <code class=\"docutils literal notranslate\"><span class=\"pre\">my_view</span></code>, má tá cuma seo ar do URLConf:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;foo/&lt;int:code&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">my_view</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>ansin cuirfear iarratais ar <code class=\"docutils literal notranslate\"><span class=\"pre\">/foo/1/</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">/foo/23/</span></code> a chosc ar leithligh, mar a d'fhéadfá a bheith ag súil leis. Ach nuair a iarrtar URL áirithe (m.sh., <code class=\"docutils literal notranslate\"><span class=\"pre\">/foo/23/</span></code>), úsáidfidh iarratais ina dhiaidh sin chuig an URL sin an taisce.</p>\n<p>Is féidir le <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code> argóint eochairfhocal roghnach a ghlacadh freisin, cache`, a threoraíonn don mhaisitheoir taisce ar leith a úsáid (ó do shuíomh: SETING: `CACHES) agus torthaí amharc á chaitheamh agat. De réir réamhshocraithe, úsáidfear an taisce <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code>, ach is féidir leat aon taisce a theastaíonn uait a shonrú:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@cache_page</span><span class=\"p\">(</span><span class=\"mi\">60</span> <span class=\"o\">*</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"n\">cache</span><span class=\"o\">=</span><span class=\"s2\">&quot;special_cache&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>You can also override the cache prefix on a per-view basis. <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code>\ntakes an optional keyword argument, <code class=\"docutils literal notranslate\"><span class=\"pre\">key_prefix</span></code>,\nwhich works in the same way as the <a class=\"reference internal\" href=\"/ga/6.0/ref/settings/#std-setting-CACHE_MIDDLEWARE_KEY_PREFIX\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHE_MIDDLEWARE_KEY_PREFIX</span></code></a>\nsetting for the middleware. It can be used like this:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@cache_page</span><span class=\"p\">(</span><span class=\"mi\">60</span> <span class=\"o\">*</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"n\">key_prefix</span><span class=\"o\">=</span><span class=\"s2\">&quot;site1&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Is féidir na hargóintí <code class=\"docutils literal notranslate\"><span class=\"pre\">key_prefix</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">cache</span></code> a shonrú le chéile. &lt;CACHES-KEY_PREFIX&gt;Déanfar an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">key_prefix</span></code> agus an:setting: KEY_PREFIX a shonraítear fao:setting: CACHES a chomhcheangal.</p>\n<p>&lt;downstream-caches&gt;Ina theannta sin, socraíonn <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code> ceannteidil <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">Expires</span></code> go huathoibríoch sa fhreagra a théann i bhfeidh:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>caches downstream <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n<aside class=\"admonition-responses-are-cached-before-response-middleware-runs admonition\">\n<p class=\"admonition-title\">Responses are cached before response middleware runs</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code> is intended for content that is safe to reuse for requests\nto the same URL. It does not automatically vary by authentication,\nsessions, cookies, or other request-specific state.</p>\n<p>As a decorator wrapping the view directly, responses are cached before\nresponse middleware runs. If cache variation depends on response\nmiddleware, ensure it runs before the response is cached. For example, when\ncaching views containing CSRF-protected forms, follow\n<a class=\"reference internal\" href=\"/ga/6.0/howto/csrf/#csrf-cache-page\"><span class=\"std std-ref\">Cosaint CSRF a úsáid le caching</span></a> to ensure the <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> header is set first.</p>\n</aside>\n<section id=\"specifying-per-view-cache-in-the-urlconf\">\n<h3>Taisce in aghaidh an amharc a shonrú sa URLConf<a class=\"heading-anchor\" href=\"#specifying-per-view-cache-in-the-urlconf\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The examples in the previous section have hardcoded the fact that the view is\ncached, because <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code> alters the <code class=\"docutils literal notranslate\"><span class=\"pre\">my_view</span></code> function in place. This\napproach couples your view to the cache system, which is not ideal for several\nreasons. For instance, you might want to reuse the view functions on another,\ncache-less site, or you might want to distribute the views to people who might\nwant to use them without being cached. The solution to these problems is to\nspecify the per-view cache in the URLconf rather than next to the view\nfunctions themselves.</p>\n<p>Is féidir leat é sin a dhéanamh tríd an bhfeidhm amharc a fhilleadh le cache_page` nuair a thagann tú tagairt dó sa URLConf. Seo an sean-URLConf ó níos luaithe:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;foo/&lt;int:code&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">my_view</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Seo an rud céanna, le <code class=\"docutils literal notranslate\"><span class=\"pre\">my_view</span></code> fillte i <code class=\"docutils literal notranslate\"><span class=\"pre\">cache_page</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache_page</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;foo/&lt;int:code&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">cache_page</span><span class=\"p\">(</span><span class=\"mi\">60</span> <span class=\"o\">*</span> <span class=\"mi\">15</span><span class=\"p\">)(</span><span class=\"n\">my_view</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"template-fragment-caching\">\n<span id=\"std-templatetag-cache\"></span><h2>Caching bhrúin teimpléad<a class=\"heading-anchor\" href=\"#template-fragment-caching\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Má tá tú tar éis níos mó smachta fós, is féidir leat blúirí teimpléad a thaiscáil ag baint úsáide as an gclib teimpléad <code class=\"docutils literal notranslate\"><span class=\"pre\">cache`.</span> <span class=\"pre\">Chun</span> <span class=\"pre\">rochtain</span> <span class=\"pre\">a</span> <span class=\"pre\">thabhairt</span> <span class=\"pre\">do</span> <span class=\"pre\">do</span> <span class=\"pre\">theimpléad</span> <span class=\"pre\">ar</span> <span class=\"pre\">an</span> <span class=\"pre\">gclib</span> <span class=\"pre\">seo,</span> <span class=\"pre\">cuir</span> <span class=\"pre\">``{%</span> <span class=\"pre\">load</span> <span class=\"pre\">cache%}</span></code> in aice le barr do theimpléad.</p>\n<p>Cuireann an chlib teimpléid <code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span> <span class=\"pre\">cache%}</span></code> ábhar an bhloc a chosc ar feadh méid áirithe ama. Tógann sé dhá argóint ar a laghad: an t-am taisce, i soicindí, agus an t-ainm chun an blúire taisce a thabhairt. Déantar an blúire a stóráil go deo má tá an t-am amach <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>None <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Glacfar an t-ainm mar atá, ná húsáid athróg. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">cache</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">cache</span> <span class=\"m\">500</span> <span class=\"nv\">sidebar</span> <span class=\"cp\">%}</span>\n    .. sidebar ..\n<span class=\"cp\">{%</span> <span class=\"k\">endcache</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Uaireanta b'fhéidir gur mhaith leat cóipeanna iolracha de bhrúin a thaisceadh ag brath ar roinnt sonraí dinimiciúla atá le feiceáil taobh Mar shampla, b'fhéidir gur mhaith leat cóip taiscéadaithe ar leithligh den taobh barra a úsáideadh sa sampla roimhe seo do gach úsáideoir de do shuíomh. Déan é seo trí argóint bhreise amháin nó níos mó, a d'fhéadfadh a bheith ina athróga le scagairí nó gan scagairí, a chur chuig an gclib teimpléid <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>{% cache%} <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>chun an blúir taisce a aithint go uathúil:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">cache</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">cache</span> <span class=\"m\">500</span> <span class=\"nv\">sidebar</span> <span class=\"nv\">request.user.username</span> <span class=\"cp\">%}</span>\n    .. sidebar for logged-in user ..\n<span class=\"cp\">{%</span> <span class=\"k\">endcache</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>&lt;i18n-cache-key&gt;Má tá: SETTING: USE_I18N socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, beidh taisce meán-earraí in aghaidh an láithreáin: ref: meas a thabhairt don teanga ghníomhach. &lt;template-translation-vars&gt;Maidir leis an gclib teimpléad <code class=\"docutils literal notranslate\"><span class=\"pre\">cache</span></code> d'fhéadfá ceann de na hathróga:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>aistriúcháin-shonracha <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>atá ar fáil i dteimpléid a úsáid chun an toradh céanna a bhaint amach:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">i18n</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">cache</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">get_current_language</span> <span class=\"k\">as</span> <span class=\"nv\">LANGUAGE_CODE</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">cache</span> <span class=\"m\">600</span> <span class=\"nv\">welcome</span> <span class=\"nv\">LANGUAGE_CODE</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">translate</span> <span class=\"s2\">&quot;Welcome to example.com&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endcache</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Is féidir leis an t-am taisce a bheith ina athróg teimpléad, chomh fada agus a réitíonn an t-athróg teimpléad ar luach slámhshláir. Mar shampla, má tá an t-athróg teimpléad <code class=\"docutils literal notranslate\"><span class=\"pre\">my_timeout</span></code> socraithe go luach <code class=\"docutils literal notranslate\"><span class=\"pre\">600</span></code>, ansin tá an dá shampla seo a leanas coibhéiseach:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">cache</span> <span class=\"m\">600</span> <span class=\"nv\">sidebar</span> <span class=\"cp\">%}</span> ... <span class=\"cp\">{%</span> <span class=\"k\">endcache</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">cache</span> <span class=\"nv\">my_timeout</span> <span class=\"nv\">sidebar</span> <span class=\"cp\">%}</span> ... <span class=\"cp\">{%</span> <span class=\"k\">endcache</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Tá an ghné seo úsáideach chun athdhéanamh i dteimpléid a sheachaint. Is féidir leat an t-am a shocrú in athróg, in aon áit amháin, agus an luach sin a athúsáid.</p>\n<p>De réir réamhshocraithe, déanfaidh an clib taisce iarracht an taisce ar a dtugtar “template_fragments” a úsáid. Mura bhfuil taisce den sórt sin ann, tiocfaidh sé ar ais chun an taisce réamhshocraithe a úsáid. Féadfaidh tú cúltaca taisce malartach a roghnú le húsáid leis an argóint eochairfhocal <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>úsáid <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>, nach mór gurb é an argóint deireanach don chlib.</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">cache</span> <span class=\"m\">300</span> <span class=\"nv\">local-thing</span> <span class=\"p\">...</span>  <span class=\"nv\">using</span><span class=\"o\">=</span><span class=\"s2\">&quot;localcache&quot;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Meastar gur earráid é ainm taisce nach bhfuil cumraithe a shonrú.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.utils.make_template_fragment_key\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.core.cache.utils.</span></span><span class=\"sig-name descname\"><span class=\"pre\">make_template_fragment_key</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fragment_name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">vary_on</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.utils.make_template_fragment_key\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>If you want to obtain the cache key used for a cached fragment, you can use\n<code class=\"docutils literal notranslate\"><span class=\"pre\">make_template_fragment_key</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">fragment_name</span></code> is the same as the second\nargument to the <code class=\"docutils literal notranslate\"><span class=\"pre\">cache</span></code> template tag; <code class=\"docutils literal notranslate\"><span class=\"pre\">vary_on</span></code> is a list of all additional\narguments passed to the tag. This function can be useful for invalidating or\noverwriting a cached item, for example:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.cache.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">make_template_fragment_key</span>\n<span class=\"go\"># cache key for {% cache 500 sidebar username %}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">key</span> <span class=\"o\">=</span> <span class=\"n\">make_template_fragment_key</span><span class=\"p\">(</span><span class=\"s2\">&quot;sidebar&quot;</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"n\">username</span><span class=\"p\">])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">delete</span><span class=\"p\">(</span><span class=\"n\">key</span><span class=\"p\">)</span>  <span class=\"c1\"># invalidates cached template fragment</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n</section>\n<section id=\"the-low-level-cache-api\">\n<span id=\"low-level-cache-api\"></span><h2>An API taisce leibhéal íseal<a class=\"heading-anchor\" href=\"#the-low-level-cache-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uaireanta, ní ghnóthaíonn sé go mór duit a chaitheamh ar leathanach iomlán rindreáilte agus bíonn sé, i ndáiríre, ró-dhochaoithiúil.</p>\n<p>B'fhéidir, mar shampla, tá radharc ar do shuíomh ag brath a thorthaí ar roinnt ceisteanna daor, a n-athraíonn a dtorthaí ag eatraimh éagsúla. Sa chás seo, ní bheadh sé oiriúnach an taisce leathanaigh lán-leathanaigh a thairgeann na straitéisí taisce in aghaidh an láithreáin nó in aghaidh an amharc a úsáid, toisc nach mbeadh tú ag iarraidh an toradh iomlán a thaisceadh (ós rud é go n-athraíonn cuid de na sonraí go minic), ach ba mhaith leat fós na torthaí a athraíonn.</p>\n<p>For cases like this, Django exposes a low-level cache API. You can use this API\nto store objects in the cache with any level of granularity you like. You can\ncache any Python object that can be pickled safely: strings, dictionaries,\nlists of model objects, and so forth. (Most common Python objects can be\npickled; refer to the <a class=\"reference external\" href=\"https://docs.python.org/3/library/pickle.html#module-pickle\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">Python</span> <span class=\"pre\">documentation</span></code></a> for more information\nabout pickling.)</p>\n<section id=\"accessing-the-cache\">\n<h3>Rochtain a fháil ar an taisce<a class=\"heading-anchor\" href=\"#accessing-the-cache\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.caches\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.core.cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">caches</span></span><a class=\"heading-anchor\" href=\"#django.core.cache.caches\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Is féidir leat rochtain a fháil ar na táscáin atá cumraithe sa socrú:: CACHES trí réad cosúil le dict: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.cache.caches</span></code>. Tabharfaidh iarratais arís agus arís eile ar an alias céanna sa snáithe céanna ar ais an réad céanna.</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">caches</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache1</span> <span class=\"o\">=</span> <span class=\"n\">caches</span><span class=\"p\">[</span><span class=\"s2\">&quot;myalias&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache2</span> <span class=\"o\">=</span> <span class=\"n\">caches</span><span class=\"p\">[</span><span class=\"s2\">&quot;myalias&quot;</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache1</span> <span class=\"ow\">is</span> <span class=\"n\">cache2</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>Mura bhfuil an eochair ainmnithe ann, ardófar <code class=\"docutils literal notranslate\"><span class=\"pre\">InvalidCacheBackendError</span></code>.</p>\n<p>Chun sábháilteacht snáithe a sholáthar, cuirfear sampla difriúil den chúltaca taisce ar ais do gach snáithe.</p>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.core.cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">cache</span></span><a class=\"heading-anchor\" href=\"#django.core.cache.cache\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Mar aicearra, tá an taisce réamhshocraithe ar fáil mar <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.cache.cache</span></code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache</span>\n</code></pre></div>\n<p>Tá an réad seo comhionann le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>caches ['réamhshocraithe'] <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"basic-usage\">\n<span id=\"cache-basic-interface\"></span><h3>Úsáid bunúsach<a class=\"heading-anchor\" href=\"#basic-usage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is é an comhéadan bunúsach:</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.set\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">set</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timeout</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">DEFAULT_TIMEOUT</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.set\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;hello, world!&quot;</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">)</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.get\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.get\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;hello, world!&#39;</span>\n</code></pre></div>\n<p>Ba chóir go mbeadh <code class=\"docutils literal notranslate\"><span class=\"pre\">eochair</span></code> ina str`, agus is féidir <code class=\"docutils literal notranslate\"><span class=\"pre\">luach</span></code> a bheith ina aon rud Python inpictilte.</p>\n<p>Tá an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code> roghnach agus réamhshocraíonn sé ar an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code> den chúltaca cuí sa socrúit:setting: CACHES (mínithe thuas). Is é líon na soicind ba chóir an luach a stóráil sa taisce. Ag dul isteach <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> le haghaidh <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code>, beidh an luach a thaisceadh go deo. Ní dhéanfaidh <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code> de <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code> a thaisceadh an luach.</p>\n<p>Mura bhfuil an réad ann sa taisce, filleann <code class=\"docutils literal notranslate\"><span class=\"pre\">cache.get</span> <span class=\"pre\">()</span> <span class=\"pre\">````None</span></code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Wait 30 seconds for &#39;my_key&#39; to expire...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n</code></pre></div>\n<p>Más gá duit a chinneadh an bhfuil an réad sa taisce agus go bhfuil luach litriúil “None” stóráilte agat, bain úsáid as réad sentinel mar réamhshocraithe:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">sentinel</span> <span class=\"o\">=</span> <span class=\"nb\">object</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"n\">sentinel</span><span class=\"p\">)</span> <span class=\"ow\">is</span> <span class=\"n\">sentinel</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Wait 30 seconds for &#39;my_key&#39; to expire...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"n\">sentinel</span><span class=\"p\">)</span> <span class=\"ow\">is</span> <span class=\"n\">sentinel</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>Is féidir le <code class=\"docutils literal notranslate\"><span class=\"pre\">cache.get</span> <span class=\"pre\">()</span> <span class=\"pre\">``argóint</span> <span class=\"pre\">``default</span></code> a ghlacadh. Sonraíonn sé seo cén luach atá le filleadh mura bhfuil an réad ann sa taisce:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;has expired&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;has expired&#39;</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.add\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timeout</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">DEFAULT_TIMEOUT</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.add\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Chun eochair a chur leis ach amháin mura bhfuil sé ann cheana féin, bain úsáid as an modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>add () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Tógann sé na paraiméadair chéanna le <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>set () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>, ach ní dhéanfaidh sé iarracht an taisce a nuashonrú má tá an eochair a shonraítear i láthair cheana féin:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;add_key&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Initial value&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">add</span><span class=\"p\">(</span><span class=\"s2\">&quot;add_key&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;New value&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;add_key&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;Initial value&#39;</span>\n</code></pre></div>\n<p>Más gá duit fios a bheith agat an stóráil <code class=\"docutils literal notranslate\"><span class=\"pre\">add</span> <span class=\"pre\">()</span> <span class=\"pre\">``luach</span> <span class=\"pre\">sa</span> <span class=\"pre\">taisce,</span> <span class=\"pre\">is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">leat</span> <span class=\"pre\">an</span> <span class=\"pre\">luach</span> <span class=\"pre\">tuairisceáin</span> <span class=\"pre\">a</span> <span class=\"pre\">sheiceáil.</span> <span class=\"pre\">Tabharfaidh</span> <span class=\"pre\">sé</span> <span class=\"pre\">ar</span> <span class=\"pre\">ais</span> <span class=\"pre\">``True</span></code> má stóráilíodh an luach, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> ar shlí eile.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.get_or_set\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_or_set</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timeout</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">DEFAULT_TIMEOUT</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.get_or_set\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Más mian leat luach eochair a fháil nó luach a shocrú mura bhfuil an eochair sa taisce, tá an modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_or_set () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>ann. Tógann sé na paraiméadair chéanna le <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>get () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>ach socraítear an réamhshocrú mar an luach taisce nua don eochair sin, seachas a thabhairt ar ais:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_new_key&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># returns None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get_or_set</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_new_key&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;my new value&quot;</span><span class=\"p\">,</span> <span class=\"mi\">100</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;my new value&#39;</span>\n</code></pre></div>\n<p>Is féidir leat aon ghlaoch a chur ar aghaidh mar luach*réamhshocraithe*:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get_or_set</span><span class=\"p\">(</span><span class=\"s2\">&quot;some-timestamp-key&quot;</span><span class=\"p\">,</span> <span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">)</span>\n<span class=\"go\">datetime.datetime(2014, 12, 11, 0, 15, 49, 457920)</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.get_many\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_many</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">keys</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.get_many\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Tá comhéadan <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_many () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ann freisin nach mbuaileann an taisce ach uair amháin. Tugann <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>get_many () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>foclóir ar ais leis na heochracha go léir a d'iarr tú orthu atá ann i ndáiríre sa taisce (agus níor éag):</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;b&quot;</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;c&quot;</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get_many</span><span class=\"p\">([</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;b&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;c&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">{&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.set_many\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">set_many</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">dict</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timeout</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.set_many\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Chun luachanna iolracha a shocrú níos éifeachtaí, bain úsáid as <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>set_many () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>chun foclóir péirí eochairluacha a rith:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set_many</span><span class=\"p\">({</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">:</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"s2\">&quot;b&quot;</span><span class=\"p\">:</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"s2\">&quot;c&quot;</span><span class=\"p\">:</span> <span class=\"mi\">3</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get_many</span><span class=\"p\">([</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;b&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;c&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">{&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}</span>\n</code></pre></div>\n<p>Cosúil le <code class=\"docutils literal notranslate\"><span class=\"pre\">cache.set</span> <span class=\"pre\">()</span> <span class=\"pre\">``,</span> <span class=\"pre\">glacann</span> <span class=\"pre\">``set_many</span> <span class=\"pre\">()</span></code> paraiméadar roghnach <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code>.</p>\n<p>Ar chúltaca tacaithe (memcached), filleann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>set_many () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>liosta eochracha ar theip orthu a chur isteach.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.delete\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is féidir leat eochracha a scriosadh go sainráite le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>delete () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>chun an taisce do réad áirithe a ghlanadh:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">delete</span><span class=\"p\">(</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>Tugann <code class=\"docutils literal notranslate\"><span class=\"pre\">delete</span> <span class=\"pre\">()</span> <span class=\"pre\">``filleadh</span> <span class=\"pre\">``True</span></code> má scriosadh an eochair go rathúil, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> ar shlí eile.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.delete_many\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_many</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">keys</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.delete_many\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Más mian leat dornán eochracha a ghlanadh ag an am céanna, is féidir le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>delete_many () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>liosta eochracha atá le glanadh a ghlanadh:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">delete_many</span><span class=\"p\">([</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;b&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;c&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.clear\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">clear</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.clear\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Finally, if you want to delete all the keys in the cache, use\n<code class=\"docutils literal notranslate\"><span class=\"pre\">cache.clear()</span></code>. Be careful with this; <code class=\"docutils literal notranslate\"><span class=\"pre\">clear()</span></code> will remove <em>everything</em>\nfrom the cache, not just the keys set by your application:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">clear</span><span class=\"p\">()</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.touch\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">touch</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">timeout</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">DEFAULT_TIMEOUT</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.touch\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Socraíonn <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>cache.touch () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>éag nua le haghaidh eochair. Mar shampla, chun eochair a nuashonrú chun dul in éag 10 soicind as seo:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">touch</span><span class=\"p\">(</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>Cosúil le modhanna eile, tá an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code> roghnach agus réamhshocraíonn sé ar an rogha <code class=\"docutils literal notranslate\"><span class=\"pre\">TIMEOUT</span></code> den chúltaca cuí sa socrúit:setting: CACHES.</p>\n<p>Filleann <code class=\"docutils literal notranslate\"><span class=\"pre\">touch</span> <span class=\"pre\">()</span> <span class=\"pre\">```True</span></code> má rinneadh teagmháil leis an eochair go rathúil, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> ar shlí eile.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.incr\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">incr</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">delta</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">1</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.incr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.decr\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">decr</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">delta</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">1</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">version</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.decr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is féidir leat eochair atá ann cheana féin a mhéadú nó a laghdú ag baint úsáide as na modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">incr</span> <span class=\"pre\">()</span> <span class=\"pre\">``nó</span> <span class=\"pre\">`decr</span> <span class=\"pre\">()</span></code>, faoi seach. De réir réamhshocraithe, déanfar an luach taisce atá ann cheana a mhéadú nó a laghdú faoi 1. Is féidir luachanna fáis/laghdaithe eile a shonrú trí argóint a sholáthar don ghlao fáis/laghdaithe. Ardófar ValueError má dhéanann tú iarracht eochair taisce nach bhfuil ann a mhéadú nó a laghdú:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">incr</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">incr</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">)</span>\n<span class=\"go\">12</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">decr</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">11</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">decr</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">)</span>\n<span class=\"go\">6</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Ní ráthaítear go mbeidh modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">incr</span> <span class=\"pre\">()</span> <span class=\"pre\">`</span></code>/<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>decr () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>adamhacha. Ar na cúltacaí sin a thacaíonn le fhás/laghdú adamhach (go háirithe, an cúltaca memcached), beidh oibríochtaí increimeádaithe agus laghdaithe adamhacha. Mar sin féin, mura soláthraíonn an cúltaca oibríocht fhásai/laghdaithe go dúchasach, cuirfear i bhfeidhm é ag baint úsáide as aisghabhálaí/nuashonrú dhá chéim.</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.cache.cache.close\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">cache.</span></span><span class=\"sig-name descname\"><span class=\"pre\">close</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.cache.cache.close\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is féidir leat an nasc le do taisce a dhúnadh le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>close () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>má chuireann an cúltaca taisce i bhfeidhm.</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Maidir le tuairisceáin nach gcuireann modhanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>dúnta <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>i bhfeidhm is neamh-op é.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Tá na leaganacha async de mhodhanna bonn réamhshocraithe le <code class=\"docutils literal notranslate\"><span class=\"pre\">a</span></code>, m.sh. cache.aadd () ``nó ``cache.adelete_many ()`. Féach <a class=\"reference internal\" href=\"#id16\">Tacaíocht asincrónaithe</a> le haghaidh tuilleadh sonraí.</p>\n</aside>\n</section>\n<section id=\"cache-key-prefixing\">\n<span id=\"id13\"></span><h3>Réamhshocrú eochair taisce<a class=\"heading-anchor\" href=\"#cache-key-prefixing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má tá sampla taisce á roinnt agat idir freastalaithe, nó idir do thimpeallachtaí táirgeachta agus forbartha, is féidir go n-úsáidfidh freastalaí eile sonraí a chuimsíonn freastalaí amháin. Má tá formáid na sonraí taisceáilte difriúil idir freastalaithe, d'fhéadfadh fadhbanna an-deacair a dhiagnóisiú a bheith mar thoradh air seo.</p>\n<p>Chun é seo a chosc, soláthraíonn Django an cumas na heochracha taisce go léir a úsáideann freastalaí a réamhú &lt;CACHES-KEY_PREFIX&gt;Nuair a shábháiltear eochair taisce áirithe nó a aisghabháil, déanfaidh Django réamh-eochair an taisce go huathoibríoch le luach an socrú taisce: socrú: KEY_PREFIX.</p>\n<p>Trí chinntiú go bhfuil difri:setting: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>KEY_PREFIX &lt;CACHES-KEY_PREFIX&gt;`ag gach cás Django, is féidir leat a chinntiú nach mbeidh aon imbhuailtí i luachanna taisce.</p>\n</section>\n<section id=\"cache-versioning\">\n<span id=\"id14\"></span><h3>Leagán taisce<a class=\"heading-anchor\" href=\"#cache-versioning\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Nuair a athraíonn tú cód reatha a úsáideann luachanna taiscthe, b'fhéidir go mbeidh ort aon luachanna taiscéadaithe atá ann cheana a ghlanadh. Is é an bealach is éasca le seo a dhéanamh ná an taisce iomlán a shruthlú, ach d'fhéadfadh sé seo go gcaillfear luachanna taisce atá fós bailí agus úsáideach.</p>\n<p>Soláthraíonn Django bealach níos fearr chun luachanna taisce aonair a dhíriú. &lt;CACHES-VERSION&gt;Tá aitheantóir leagan ar fud an chórais ag creat taisce Django, sonraithe ag baint úsáide as an socrú taisce: leagan: VERSION. Déantar luach an socraithe seo a chomhcheangal go huathoibríoch leis an réimír taisce agus leis an eochair taisce a sholáthraíonn an úsáideoir chun an eochair taisce de</p>\n<p>De réir réamhshocraithe, áireofar leagan eochair taisce réamhshocraithe an láithreáin go huathoibríoch Mar sin féin, tá argóint <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>leagan <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>sa fheidhmeanna taisce príomha uile, ionas gur féidir leat eochrleagan taisce áirithe a shonrú le socrú nó a fháil. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Set version 2 of a cache key</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;hello world!&quot;</span><span class=\"p\">,</span> <span class=\"n\">version</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get the default version (assuming version=1)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get version 2 of the same key</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"n\">version</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;hello world!&#39;</span>\n</code></pre></div>\n<p>Is féidir leagan eochair shonrach a mhéadú agus a shocrú ag baint úsáide as na modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">incr_version</span> <span class=\"pre\">()</span> <span class=\"pre\">``agus</span> <span class=\"pre\">`decr_version</span> <span class=\"pre\">()</span></code>. Cuireann sé seo ar chumas eochracha ar leith a chur chuig leagan nua, rud a fhágann gan tionchar ar eochracha eile. Leanúint lenár sampla roimhe seo:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Increment the version of &#39;my_key&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">incr_version</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># The default version still isn&#39;t available</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"go\"># Version 2 isn&#39;t available, either</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"n\">version</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># But version 3 *is* available</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_key&quot;</span><span class=\"p\">,</span> <span class=\"n\">version</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;hello world!&#39;</span>\n</code></pre></div>\n</section>\n<section id=\"cache-key-transformation\">\n<span id=\"id15\"></span><h3>Eochair claochlú taisce<a class=\"heading-anchor\" href=\"#cache-key-transformation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Mar a thuairiscítear sa dá chuid roimhe seo, ní úsáidtear an eochair taisce a sholáthraíonn úsáideoir focal focal - déantar é a chomhcheangal leis an réimír taisce agus an leagan eochair chun eochair taisce deiridh a sholáthar. De réir réamhshocraithe, ceanglaítear na trí chuid ag baint úsáide as colons chun sreang deiridh a tháirgeadh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">make_key</span><span class=\"p\">(</span><span class=\"n\">key</span><span class=\"p\">,</span> <span class=\"n\">key_prefix</span><span class=\"p\">,</span> <span class=\"n\">version</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\">:</span><span class=\"si\">%s</span><span class=\"s2\">:</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"p\">(</span><span class=\"n\">key_prefix</span><span class=\"p\">,</span> <span class=\"n\">version</span><span class=\"p\">,</span> <span class=\"n\">key</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Más mian leat na codanna a chur le chéile ar bhealaí éagsúla, nó próiseáil eile a chur i bhfeidhm ar an eochair dheiridh (m.sh., díleá hash de na príomhchodanna a thógáil), is féidir leat eochairfheidhm saincheaptha a sholáthar.</p>\n<p>Sonraíonn an socrú taisce: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>KEY_FUNCTION &lt;CACHES-KEY_FUNCTION&gt;`cosán poncair chuig feidhm a mheaitseann le fréamhshamhail <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>make_key () <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>thuas. Má chuirtear ar fáil, úsáidfear an eochrfheidhm saincheaptha seo in ionad na feidhme comhcheangailte eochair réamhshocrai</p>\n</section>\n<section id=\"cache-key-warnings\">\n<h3>Príomhrabhaidh taisce<a class=\"heading-anchor\" href=\"#cache-key-warnings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ní cheadaíonn Memcached, an cúltaca taisce táirgeachta is coitianta a úsáidtear, eochracha taisce níos faide ná 250 carachtar nó ina bhfuil spás bán nó carachtair rialaithe, agus beidh eisceacht ina chúis le heochracha den sórt sin a úsáid. Chun cód taisce iniompartha a spreagadh agus iontas míthaitneamhach a íoslaghdú, eisíonn na cúltaca taisce ionsuite eile rabhadh (<code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.cache.backends.base.cachekeyWarning</span></code>) má úsáidtear eochair a chuirfeadh earráid ar memcached.</p>\n<p>Má tá cúltaca táirgeachta á úsáid agat ar féidir leat glacadh le raon níos leithne eochracha (cúltaca saincheaptha, nó ceann de na cúltaca neamh-mheasta), agus gur mhaith leat an raon níos leithne seo a úsáid gan rabhaidh, is féidir leat CachekeyWarning` a thostú leis an gcód seo sa mhodúl bainistí` de cheann de do:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">warnings</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CacheKeyWarning</span>\n\n<span class=\"n\">warnings</span><span class=\"o\">.</span><span class=\"n\">simplefilter</span><span class=\"p\">(</span><span class=\"s2\">&quot;ignore&quot;</span><span class=\"p\">,</span> <span class=\"n\">CacheKeyWarning</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Más mian leat loighic bailíochtaithe eochair saincheaptha a sholáthar ina ionad sin do cheann de na cúltaca ionsuite, is féidir leat é a fho-aicmiú, díreach an modh validate_key a shárú, agus na treoracha chun cúltaca taisce saincheaptha a úsáid `_ a leanúint. Mar shampla, chun é seo a dhéanamh don chúltaca ``locmem`, cuir an cód seo i modúl:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.cache.backends.locmem</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">LocMemCache</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CustomLocMemCache</span><span class=\"p\">(</span><span class=\"n\">LocMemCache</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">validate_key</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">key</span><span class=\"p\">):</span>\n<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot;Custom validation, raising exceptions or warnings as needed.&quot;&quot;&quot;</span>\n        <span class=\"o\">...</span>\n</code></pre></div>\n<p>... agus bain úsáid as an gcosán poncaigh Python chuig an rang seo sa chuid: setting: BACKEND `de do shuíomh: &lt;CACHES-BACKEND&gt;CACHES`.</p>\n</section>\n</section>\n<section id=\"asynchronous-support\">\n<span id=\"id16\"></span><h2>Tacaíocht asincrónach<a class=\"heading-anchor\" href=\"#asynchronous-support\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tá tacaíocht ag forbairt ag Django do chúltaca taisce asincrónacha, ach ní thacaíonn sé le caching asincrónach fós. Beidh sé ag teacht i scaoileadh amach anseo.</p>\n<p>&lt;cache-basic-interface&gt;Tá leaganacha async ag <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.cache.backends.base.baseCache</span></code> de:ref: gach modh bonn `. De réir choinbhinsiúin, tá na leaganacha asincrónacha de na modhanna go léir réamhshocraithe le `a `. De réir réamhshocraithe, tá na hargóintí don dá leagan mar an gcéanna:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">await</span> <span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">aset</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">await</span> <span class=\"n\">cache</span><span class=\"o\">.</span><span class=\"n\">ahas_key</span><span class=\"p\">(</span><span class=\"s2\">&quot;num&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n</section>\n<section id=\"downstream-caches\">\n<span id=\"id17\"></span><h2>Caches downstream<a class=\"heading-anchor\" href=\"#downstream-caches\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Go dtí seo, dhírigh an doiciméad seo ar do shonraí* díniú* a chaitheamh. Ach tá cineál eile caighdeáin ábhartha d'fhorbairt gréasáin freisin: caistriú arna ndéanamh ag taiscí “downstream”. Is córais iad seo a dhéanann taisce leathanaigh d'úsáideoirí fiú sula sroicheann an t-iarratas do shuíomh Gréasáin.</p>\n<p>Seo cúpla sampla de chaches iarshrutha:</p>\n<ul class=\"simple\">\n<li><p>Agus HTTP á úsáid agat, féadfaidh do: abbr: ISP (Soláthraí Seirbhíse Idirlín) `leathanaigh áirithe a thaisceadh, mar sin má d'iarr tú leathanach ó ``http://example.com/`, chuirfeadh do ISP an leathanach chugat gan rochtain a fháil go díreach ar example.com. Níl aon eolas ag cothabhálaí example.com ar an gcaistriú seo; suíonn an ISP idir example.com agus do bhrabhsálaí gréasáin, ag láimhseáil an caistriú go léir go trédhearcach. Ní féidir a chaiteáil den sórt sin indéanta faoi HTTPS toisc gur ionsaí fear sa lár a bheadh ann.</p></li>\n<li><p>D'fhéadfadh go mbeadh do shuíomh Gréasáin Django taobh thiar de*cache* seachfhreastalaí*, mar shampla Squid Web Proxy Cache (<a class=\"reference external\" href=\"http://www.squid-cache.org/\">http://www.squid-cache.org/</a>), a choscann leathanaigh le haghaidh feidhmíochta. Sa chás seo, déanfadh an seachfhreastalaí gach iarratas a láimhseáil ar dtús, agus ní chuirfeadh sé chuig d'iarratas ach amháin más gá.</p></li>\n<li><p>Coscann do bhrabhsálaí gréasáin leathanaigh, freisin. Má sheolann leathanach gréasáin na ceanntála cuí amach, úsáidfidh do bhrabhsálaí an chóip thaisceáilte áitiúil le haghaidh iarratais ina dhiaidh sin chuig an leathanach sin, gan teagmháil a dhéanamh leis an leathanach gréasáin arís chun a fheiceáil an bhfuil athrú aige.</p></li>\n</ul>\n<p>Is borradh deas éifeachtúlachta é an chaching anuas, ach tá contúirt ann dó: Tá difríocht idir ábhar go leor leathanaigh ghréasáin bunaithe ar fhíordheimhniú agus go leor athróg eile, agus d'fhéadfadh córais taisce a shábháil leathanaigh atá bunaithe go dall ar URLanna sonraí míchearta nó íogair a nochtadh do chuairteoirí ina dhiaidh sin ar na leathanaigh sin.</p>\n<p>For example, if you operate a web email system, then the contents of the\n&quot;inbox&quot; page depend on which user is logged in. If an ISP blindly cached your\nsite, then the first user who logged in through that ISP would have their\nuser-specific inbox page cached for subsequent visitors to the site. That's\nnot cool.</p>\n<p>Ar ámharaí an tsaoil, soláthraíonn HTTP réiteach don fhadhb seo. Tá roinnt ceanntásca HTTP ann chun treoir a thabhairt do chaches iarshrutha a n-ábhar taisce a dhifriú ag brath ar athróga ainmnithe, agus chun meicníochtaí taiscéála a insint gan leathanaigh áirithe a thaisceadh. Breathnóimid ar chuid de na ceanntásca seo sna codanna a leanann.</p>\n</section>\n<section id=\"using-vary-headers\">\n<span id=\"id18\"></span><h2>Ag baint úsáide as ceanntásca <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code><a class=\"heading-anchor\" href=\"#using-vary-headers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sainmhíníonn an ceannteideal Vary cén ceannteideal iarratais ba chóir do mheicníocht taisce a chur san áireamh agus a eochair taisce á thógáil. Mar shampla, má bhraitheann ábhar leathanaigh ghréasáin ar rogha teanga úsáideora, deirtear go n-athraíonn an leathanach ar an teanga.</p>\n<p>De réir réamhshocraithe, cruthaíonn córas taisce Django a heochracha taisce ag baint úsáide as an URL láncháilithe a iarrtar - m.sh., <code class=\"docutils literal notranslate\"><span class=\"pre\">”</span> <span class=\"pre\">https://www.example.com/stories/2005/?order_by=author</span> <span class=\"pre\">“</span></code>. Ciallaíonn sé seo go n-úsáidfidh gach iarratas ar an URL sin an leagan taisceáilte céanna, beag beann ar dhifríochtaí gníomhaire úsáideora amhail fianáin nó roghanna teanga. Mar sin féin, má tháirgeann an leathanach seo ábhar éagsúil bunaithe ar dhifríocht éigin i gceanntásca iarratais - mar shampla fianán, nó teanga, nó gníomhaire úsáideora - beidh ort an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> a úsáid chun meicníochtaí caching a insint go mbraitheann aschur an leathanaigh ar na rudaí sin.</p>\n<p>Chun é seo a dhéanamh i Django, bain úsáid as an maisitheoir amharc áisiú:func: django.views.decorators.vary.vary_on_headers, mar sin:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.vary</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">vary_on_headers</span>\n\n\n<span class=\"nd\">@vary_on_headers</span><span class=\"p\">(</span><span class=\"s2\">&quot;User-Agent&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Sa chás seo, déanfaidh meicníocht caching (mar shampla middleware taisce Django féin) leagan ar leithligh den leathanach a thaisceadh do gach gníomhaire úsáideora uathúil.</p>\n<p>Is é an buntáiste a bhaineann leis an maisitheoir vary_on_headers` a úsáid seachas an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> a shocrú de láimh (ag baint úsáide as response.heads ['Vary'] = 'user-agent' `) ná go gcuireann an maisitheoir ** leis an gceannteideal Vary` (a d'fhéadfadh a bheith ann cheana féin).</p>\n<p>Is féidir leat ceanntásca iolracha a chur chuig <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>vary_on_heads () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@vary_on_headers</span><span class=\"p\">(</span><span class=\"s2\">&quot;User-Agent&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Cookie&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Insíonn sé seo do chaisceanna iarshrutha go n-athróidh ar*an bheath*, rud a chiallaíonn go bhfaighidh gach teaglaim de ghníomhaire úsáideora agus fianán a luach taisce féin. Mar shampla, measfar iarratas leis an ngníomhaire úsáideora <code class=\"docutils literal notranslate\"><span class=\"pre\">Mozilla</span></code> agus an luach fianáin <code class=\"docutils literal notranslate\"><span class=\"pre\">foo=bar</span></code> difriúil ó iarratas leis an ngníomhaire úsáideora <code class=\"docutils literal notranslate\"><span class=\"pre\">Mozilla</span></code> agus an luach fianáin <code class=\"docutils literal notranslate\"><span class=\"pre\">foo=ham</span></code>.</p>\n<p>Toisc go bhfuil éagsúlacht ar fhianán chomh coitianta, tá a: func: django.views.decorators.vary.vary_on_cookie maisitheoir ann. Tá an dá thuairim seo coibhéiseach:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@vary_on_cookie</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n\n\n<span class=\"nd\">@vary_on_headers</span><span class=\"p\">(</span><span class=\"s2\">&quot;Cookie&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Níl na ceanntásca a chuireann tú chuig vary_on_headers` íogair do chásanna; <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>&quot;Gníomhaireacht úsáideora” <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>an rud céanna le <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>&quot;úsáideach-gníomhaireaí&quot;<a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>.</p>\n<p>Is féidir leat feidhm chúntóra a úsáid freisin, :func: django.utils.cache.patch_vary_headers, go díreach. Socraíonn an fheidhm seo, nó cuireann sé leis an “Ceannteideal éagsúla”. Mar shampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">render</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">patch_vary_headers</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s2\">&quot;template_name&quot;</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">)</span>\n    <span class=\"n\">patch_vary_headers</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"s2\">&quot;Cookie&quot;</span><span class=\"p\">])</span>\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>Glacann <code class=\"docutils literal notranslate\"><span class=\"pre\">patch_vary_headers</span></code> an:class: ~django.http.http.httpResponse mar an chéad argóint agus liosta/tiúpla d'ainmneacha ceanntásc cás-neamh-íogair mar an dara argóint.</p>\n<p>&lt;9110 #section -12.5.5&gt;Le haghaidh tuilleadh eolais faoi cheanntásca Vary, féach an:rfc: official Vary spec.</p>\n<aside class=\"admonition-cachemiddleware-varies-on-authorization-automatically admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">CacheMiddleware</span></code> varies on <code class=\"docutils literal notranslate\"><span class=\"pre\">Authorization</span></code> automatically</p>\n<p>Although varying on <code class=\"docutils literal notranslate\"><span class=\"pre\">Authorization</span></code> is not strictly necessary given that\n<span class=\"target\" id=\"index-1\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9111.html#section-3.5\"><strong>RFC 9111 Section 3.5</strong></a> allows caches to avoid reusing authenticated\nresponses, Django's <code class=\"docutils literal notranslate\"><span class=\"pre\">CacheMiddleware</span></code> adds <code class=\"docutils literal notranslate\"><span class=\"pre\">Authorization</span></code> to the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> header to simplify construction of cache keys.</p>\n</aside>\n<aside class=\"version-note version-changed\" data-version=\"6.0.6\">\n<p class=\"version-note-title\">Changed in Django 6.0.6</p><p>Previously, <code class=\"docutils literal notranslate\"><span class=\"pre\">UpdateCacheMiddleware</span></code> did not vary on <code class=\"docutils literal notranslate\"><span class=\"pre\">Authorization</span></code> for\nrequests bearing that header.</p>\n</aside>\n</section>\n<section id=\"controlling-cache-using-other-headers\">\n<h2>Taisce a rialú: Ceannteidil eile a úsáid<a class=\"heading-anchor\" href=\"#controlling-cache-using-other-headers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Is iad fadhbanna eile a bhaineann le caistriú ná príobháideacht sonraí agus an cheist cá háit ar chóir sonraí a stóráil i gcaitheamh taiscí.</p>\n<p>De ghnáth bíonn dhá chineál taisce ag úsáideoir: taisce a bhrabhsálaí féin (taisce príobháideach) agus taisce a sholáthraí (taisce poiblí). Úsáideann iolrúsáideoirí taisce poiblí agus tá sé á rialú ag duine eile. Cuireann sé seo fadhbanna le sonraí íogair - níl tú ag iarraidh, abair, d'uimhir chuntais bhainc a stóráiltear i taisce poiblí. Mar sin teastaíonn bealach ó fheidhmchláir ghréasáin chun na sonraí atá príobháideach agus na sonraí atá poiblí a insint</p>\n<p>Is é an réiteach ná a chur in iúl gur chóir go mbeadh taisce leathanaigh “príobháideach.” Chun é seo a dhéanamh i Django, bain úsáid as an maisitheoir amharc: :func: ~django.views.decorators.cache.cache_control. Sampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache_control</span>\n\n\n<span class=\"nd\">@cache_control</span><span class=\"p\">(</span><span class=\"n\">private</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>Tugann an maisitheoir seo aire don cheannteideal HTTP cuí a sheoladh amach taobh thiar de na radhairc.</p>\n<p>Tabhair faoi deara go bhfuil na socruithe rialaithe taisce “príobháideach” agus “poiblí” go comhpháirteach. Cinntíonn an maisitheoir go mbaintear an treoir “phoiblí” más chóir “príobháideach” a shocrú (agus a mhalairt). Bheadh úsáid samplach den dá threoir ná suíomh blag a thairgeann iontrálacha príobháideacha agus poiblí araon. Féadfar iontrálacha poiblí a stóráil ar aon taisce roinnte. Úsáideann an cód seo a leanas: func: ~django.utils.cache.patch_cache_control, an bealach láimhe chun an ceannteideal rialaithe taisce a mhodhnú (tugtar air go hinmheánach ag an maisitheoir:: ~django.views.decorators.cache.cache_control):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">patch_cache_control</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.vary</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">vary_on_cookie</span>\n\n\n<span class=\"nd\">@vary_on_cookie</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">list_blog_entries_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_anonymous</span><span class=\"p\">:</span>\n        <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">render_only_public_entries</span><span class=\"p\">()</span>\n        <span class=\"n\">patch_cache_control</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"p\">,</span> <span class=\"n\">public</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">render_private_and_public_entries</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"p\">)</span>\n        <span class=\"n\">patch_cache_control</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"p\">,</span> <span class=\"n\">private</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>Is féidir leat taiscí iarshrutha a rialú ar bhealaí eile freisin (féach: rfc: 9111 le haghaidh sonraí faoi chaching HTTP). &lt;9111 #section -5.2.2.1&gt;Mar shampla, fiú mura n-úsáideann tú creat taisce taobh freastalaí Django, is féidir leat a rá fós do chliaint radharc a thaisceadh ar feadh méid áirithe ama leis an treor:rfc: max-age:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">cache_control</span>\n\n\n<span class=\"nd\">@cache_control</span><span class=\"p\">(</span><span class=\"n\">max_age</span><span class=\"o\">=</span><span class=\"mi\">3600</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>(Má úsáideann t* an middleware caching, socraíonn sé an max-aois ``luach an socruithe: `CACHE_MIDDLEWARE_SECONDS cheana féin. Sa chás sin, beidh tosaíocht ag an maisitheoir saincheaptha <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>max_age <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>óna:func: ~django.views.decorators.cache.cache_control, agus cumasófar na luachanna ceanntásc i gceart.)</p>\n<p>Tá aon treoir bhailí freagartha <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code> bailí i <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>cache_control () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Seo roinnt samplaí eile:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">no_transform=True</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">must_revalidate=True</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">stale_while_revalidate=uimh_soicind</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">no_cache=True</span></code></p></li>\n</ul>\n<p>Is féidir liosta iomlán na dtreoracha ar eolas a fháil sa chlárlann IANA`_ (tabhair faoi deara nach mbaineann gach ceann acu le freagraí).</p>\n<p>Más mian leat ceanntásca a úsáid chun cúisceáin a dhíchumasú ar fad, is maisitheoir amharc é: :func: ~django.views.decorators.cache.never_cache a chuireann ceanntásc leis chun a chinntiú nach ndéanfaidh brabhsálaithe nó caches eile an freagra a stóráil. Sampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.decorators.cache</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">never_cache</span>\n\n\n<span class=\"nd\">@never_cache</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">myview</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n</section>\n<section id=\"order-of-middleware\">\n<h2>Ordú <code class=\"docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code><a class=\"heading-anchor\" href=\"#order-of-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Má úsáideann tú middleware caching, tá sé tábhachtach gach leath a chur san áit cheart laistigh den socrú: setting: MIDDLEWARE. Sin toisc go gcaithfidh an middleware taisce a bheith ar an eolas faoi na ceannteidil trína ndéanfaidh an stóráil taisce a athrú. Cuireann Middleware rud éigin i gcónaí leis an gceannteideal freagartha <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Vary` nuair is féidir leis.</p>\n<p>Ritheann <code class=\"docutils literal notranslate\"><span class=\"pre\">UpdateCacheMiddleware</span></code> le linn na céime freagartha, áit a reáchtáiltear middleware in ord droim, mar sin ritheann mír ag barr an liosta*deireana* le linn na céime freagartha. Mar sin, ní mór duit a chinntiú go bhfeictear <code class=\"docutils literal notranslate\"><span class=\"pre\">UpdateCacheMiddleware</span></code> <em>roimh</em> aon mheán-earraí eile a d'fhéadfadh rud éigin a chur leis an gceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code>. Déanann na modúil middleware seo a leanas amhlaidh:</p>\n<ul class=\"simple\">\n<li><p>Cuireann <code class=\"docutils literal notranslate\"><span class=\"pre\">SessionMiddleware</span></code> leis <code class=\"docutils literal notranslate\"><span class=\"pre\">Cookie</span></code></p></li>\n<li><p>Cuireann <code class=\"docutils literal notranslate\"><span class=\"pre\">GZipMiddleWare</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept-Encoding</span></code></p></li>\n<li><p>Cuireann <code class=\"docutils literal notranslate\"><span class=\"pre\">Localemiddleware</span></code> leis <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept-Language</span></code></p></li>\n</ul>\n<p>Ar an láimh eile, ritheann <code class=\"docutils literal notranslate\"><span class=\"pre\">fetchfromcachemiddleware</span></code> le linn na céime iarratais, áit a gcuirtear meán-earraí i bhfeidhm den chéad uair go deireanach, mar sin ritheann mír ag barr an liosta*an chéad* le linn na céime iarratais. Caithfidh an <code class=\"docutils literal notranslate\"><span class=\"pre\">FetchFromCacheMiddleware</span></code> rith freisin tar éis lár earraí eile an ceannteideal <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code> a nuashonrú, mar sin caithfidh <code class=\"docutils literal notranslate\"><span class=\"pre\">FetchfromCacheMiddleware</span></code> a bheith aith* tar éis aon earra a dhéanann amhlaidh.</p>\n</section>","rootId":"django-s-cache-framework","toc":[{"title":"An taisce a chur ar bun","anchor":"setting-up-the-cache","children":[{"title":"Memcached","anchor":"memcached","children":[]},{"title":"Redis","anchor":"redis","children":[]},{"title":"Cacháil bunachar sonraí","anchor":"database-caching","children":[{"title":"An tábla taisce a chruthú","anchor":"creating-the-cache-table","children":[]},{"title":"Bunachair sonraí iliom","anchor":"multiple-databases","children":[]}]},{"title":"Caching chórais comhaid","anchor":"filesystem-caching","children":[]},{"title":"Cacháil cuimhne áitiúil","anchor":"local-memory-caching","children":[]},{"title":"Caching dummy (le haghaidh forbartha)","anchor":"dummy-caching-for-development","children":[]},{"title":"Úsáid cúltaca taisce saincheaptha","anchor":"using-a-custom-cache-backend","children":[]},{"title":"Argóintí taisce","anchor":"cache-arguments","children":[]}]},{"title":"An taisce in aghaidh an láithreáin","anchor":"the-per-site-cache","children":[]},{"title":"An taisce in aghaidh an amharc","anchor":"the-per-view-cache","children":[{"title":"Taisce in aghaidh an amharc a shonrú sa URLConf","anchor":"specifying-per-view-cache-in-the-urlconf","children":[]}]},{"title":"Caching bhrúin teimpléad","anchor":"template-fragment-caching","children":[]},{"title":"An API taisce leibhéal íseal","anchor":"the-low-level-cache-api","children":[{"title":"Rochtain a fháil ar an taisce","anchor":"accessing-the-cache","children":[]},{"title":"Úsáid bunúsach","anchor":"basic-usage","children":[]},{"title":"Réamhshocrú eochair taisce","anchor":"cache-key-prefixing","children":[]},{"title":"Leagán taisce","anchor":"cache-versioning","children":[]},{"title":"Eochair claochlú taisce","anchor":"cache-key-transformation","children":[]},{"title":"Príomhrabhaidh taisce","anchor":"cache-key-warnings","children":[]}]},{"title":"Tacaíocht asincrónach","anchor":"asynchronous-support","children":[]},{"title":"Caches downstream","anchor":"downstream-caches","children":[]},{"title":"Ag baint úsáide as ceanntásca Vary","anchor":"using-vary-headers","children":[]},{"title":"Taisce a rialú: Ceannteidil eile a úsáid","anchor":"controlling-cache-using-other-headers","children":[]},{"title":"Ordú MIDDLEWARE","anchor":"order-of-middleware","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Using Django","url":"/ga/6.0/topics/"}],"prev":{"docname":"topics/auth/customizing","title":"Fíordheimhniú a shaincheapadh i Django","url":"/ga/6.0/topics/auth/customizing/"},"next":{"docname":"topics/conditional-view-processing","title":"Próiseáil Amharc Coinníoll","url":"/ga/6.0/topics/conditional-view-processing/"},"formats":{"html":"/ga/6.0/topics/cache/","markdown":"/ga/6.0/topics/cache.md","json":"/ga/6.0/topics/cache.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/topics/cache.txt","official":"https://docs.djangoproject.com/ga/6.0/topics/cache/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}