Cache dla widoku i całej witryny
Buforowanie całych stron za pomocą dekoratorów
Cache dla widoku i całej witryny to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.
Buforowanie całej strony
Czasami wygenerowanie całej strony jest kosztowne. Django może przechowywać całą wyrenderowaną odpowiedź i odtwarzać ją dla kolejnego odwiedzającego.
Dekorator cache_page
Owiń widok za pomocą cache_page, a Django będzie buforować jego pełny wynik przez podaną liczbę sekund.
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def article_list(request):
...Co przechowuje buforowanie widoku
Buforowanie pojedynczego widoku przechowuje tylko obiekt HttpResponse tego widoku, więc przyspieszenie obejmuje wyłącznie udekorowane strony.
Buforowanie w URLconf
Można też zastosować cache_page w urls.py bez modyfikowania widoku — jest to przydatne w przypadku widoków, których nie są Państwo właścicielami.
path("news/", cache_page(60)(news_view))Buforowanie całej witryny
Aby jednocześnie buforować niemal każdą stronę, Django oferuje buforowanie całej witryny oparte na dwóch klasach middleware zamiast dekoratorów.
Dwa elementy middleware
Dodaj UpdateCacheMiddleware na początku listy, a FetchFromCacheMiddleware na jej końcu, aby buforowanie całej witryny działało.
MIDDLEWARE = [
"django.middleware.cache.UpdateCacheMiddleware",
"...your middleware...",
"django.middleware.cache.FetchFromCacheMiddleware",
]Czas buforowania witryny
Ustaw CACHE_MIDDLEWARE_SECONDS, aby określić, jak długo każda buforowana strona ma pozostać aktualna w całej witrynie.
CACHE_MIDDLEWARE_SECONDS = 600Tylko GET i HEAD
Obie strategie buforują wyłącznie bezpieczne żądania GET i HEAD, dlatego przesłania formularzy oraz inne żądania POST nigdy nie są obsługiwane z cache.
Nigdy nie buforuj prywatnych stron
Pomiń buforowanie stron zależnych od użytkownika za pomocą never_cache, ponieważ panel nie może ujawnić danych innej osoby.
from django.views.decorators.cache import never_cache
@never_cache
def dashboard(request):
...Nagłówki Vary mają znaczenie
Użyj vary_on_headers, aby buforowana strona mogła różnić się w zależności od szczegółów żądania, takich jak język lub urządzenie, i aby każdy odwiedzający otrzymał właściwą wersję.
Wybierz właściwy zakres
Sięgnij po buforowanie widoku, gdy pomocy potrzebuje tylko kilka ciężkich stron, a po buforowanie całej witryny, gdy niemal wszystko jest przeznaczone wyłącznie do odczytu.
Szybkie sprawdzenie
Ustalmy dokładnie, jak Django decyduje, co buforować.
Podsumowanie
Poznali Państwo cache_page dla pojedynczych widoków oraz middleware cache dla całej witryny, a także never_cache do ochrony prywatnych stron. 🚀
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Cache dla widoku i całej witryny” jest bezpłatna?
Tak — pełny tekst „Cache dla widoku i całej witryny” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Cache dla widoku i całej witryny”?
Buforowanie całych stron za pomocą dekoratorów Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Django Academy?
Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Cache dla widoku i całej witryny”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?
Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Backendy cache i Redis
- Cache dla widoku i całej witryny
- Buforowanie fragmentów szablonu
- Niskopoziomowe API cache i unieważnianie