English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Per cacheare risultati di calcoli costosi, cosicché non è necessario eseguirli di nuovo la prossima volta che ne hai bisogno. Ecco un pezzo di pseudo-codice che spiega come funziona la cache -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com data un URL, cercare di trovare quella pagina nel cache se la pagina è nel cache: returnare la pagina cacheata else: generare la pagina salvare la pagina generata nel cache (per la prossima volta) returnare la pagina generata
Django fornisce il proprio sistema di cache, che ti permette di salvare pagine web dinamiche, per evitare di ricaricarle quando necessario. Uno dei vantaggi dell'architettura di cache di Django è che ti permette di cache
l'output di una vista specifica una parte del template l'intero sito web
Per utilizzare la cache in Django, la prima cosa da fare è impostare dove il cache verrà salvato. Il framework di cache fornisce diverse possibilità - il cache può essere salvato nel database, nel file system, o direttamente nella memoria. Puoi configurare tutto nel file settings.py del progetto.
Aggiungi il seguente alla cartella settings.py del progetto -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'my_table_name', } }
Per questo lavoro e completare la configurazione, dobbiamo creare la tabella di cache 'my_table_name'. Per questo, è necessario fare i seguenti punti –
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com python manage.py createcachetable
Impostare la cache sul file system
Aggiungi il seguente alla cartella settings.py del progetto -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache', } }
Impostare la cache nella memoria
Questo è il metodo più efficace per la cache, puoi usarlo a seconda della libreria di binding Python scelta, come una delle seguenti opzioni –
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }
o
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', } }
Archiviare l'intero sito
Il modo più semplice per utilizzare la cache ad alta velocità in Django è archiviare l'intero sito. Questo può essere fatto modificando l'opzione MIDDLEWARE_CLASSES del file settings.py del progetto. Di seguito è necessario aggiungere all'opzione -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com MIDDLEWARE_CLASSES += ( 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', )
Si prega di notare che l'ordine è molto importante, l'aggiornamento dovrebbe avvenire prima di ottenere il middleware.
Poi, nello stesso file, è necessario impostare –
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com CACHE_MIDDLEWARE_ALIas – L'alias della cache da utilizzare per lo storage. CACHE_MIDDLEWARE_SECONDS – Il numero di secondi per cui ogni pagina dovrebbe essere cacheata.
Cache della vista
Se non si desidera cacheare l'intero sito, è possibile cacheare viste specifiche. Questo può essere fatto utilizzando il decoratore cache_page di Django. Dobbiamo cacheare il risultato della vista viewArticles-
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com from django.views.decorators.cache import cache_page @cache_page(60 * 15) def viewArticles(request, year, month): text = "Visualizzando gli articoli di: %s/%s" % (year, month) return HttpResponse(text)
Come hai visto, cache_page è il numero di secondi (parametro) necessari per la cache del risultato della vista. Nel caso dell'esempio, il risultato verrà cacheato per 15 minuti.
Nota - come abbiamo visto prima, le viste elencate sono mappate a -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com urlpatterns = patterns('myapp.views', url(r'^articles/(?P<month>\d{2})/(?P<year>\d{4})/', 'viewArticles', name = 'articles'),)
Poiché l'URL utilizza parametri, ogni chiamata diversa verrà eseguita singolarmente nella cache. Ad esempio, la richiesta /myapp/articles/02/2007 verrà cacheata separatamente come /myapp/articles/03/2008.
Anche la cache di una vista può essere completata direttamente nel file url.py. Di seguito ci sono risultati simili a quelli descritti sopra. Basta editare il file myapp/url.py e modificare i mapping URL relativi (sopra) in -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com urlpatterns = patterns('myapp.views', url(r'^articles/(?P<month>\d{2})/(?P<year>\d{4})/', cache_page(60 * 15)('viewArticles'), name = 'articles'),)
Naturalmente, non ha più bisogno di myapp/views.py.
Cache del segmento del modello
Anche una parte del modello può essere cacheata, che avviene tramite l'uso del tag cache. Modifichiamo il modello hello.html e aggiungiamo -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com {% load cache %} {% extends "main_template.html" %} {% cache 500 content %} {% block content %} Hello World!!!<p>Oggi è {{today}}</p> Siamo {% if today.day == 1 %} Il primo giorno del mese. {% elif today == 30 %} L'ultimo giorno del mese. {% else %} Io non lo so. {% endif %} <p> {% for day in days_of_week %} {{day}} </p> {% endfor %}
缓存内容块模板将成为 -
Il blocco del contenuto della cache diventerà -} # Nome del file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 {% load cache %} {% extends "main_template.html" %} {% block title %}La mia pagina di benvenuto{% endblock %} {% cache 500 content %} {% block content %} Hello World!!!<p>Oggi è {{today}}</p> Siamo {% if today.day == 1 %} Il primo giorno del mese. {% elif today == 30 %} L'ultimo giorno del mese. {% else %} Io non lo so. {% endif %} <p> {% for day in days_of_week %} {{day}} </p> {% endfor %} {% endblock %}
{% endcache %}