0Pricing
C# Academy · Lekcja

Podstawy buforowania odpowiedzi

Buforuj odpowiedzi, aby ograniczyć obciążenie.

Podstawy buforowania odpowiedzi to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 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 C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Czym jest buforowanie wyników?

Buforowanie wyników przechowuje pełną odpowiedź HTTP endpointu, dzięki czemu na powtarzające się żądania można odpowiadać z pamięci podręcznej bez ponownego uruchamiania procedury obsługi. Znacznie zmniejsza to opóźnienia i obciążenie w przypadku endpointów, do których wysyła się głównie żądania odczytu.

// First call -> handler runs, response stored
// Next calls -> response served from cache

Buforowanie wyników a buforowanie odpowiedzi

Wbudowane buforowanie wyników (dodane w .NET 7) przechowuje odpowiedzi na serwerze, a pełną kontrolę nad nim ma aplikacja. Starsze buforowanie odpowiedzi jedynie emituje nagłówki pamięci podręcznej HTTP i polega na tym, że klient lub serwery proxy je respektują.

// Output caching: server-side store you control
// Response caching: just Cache-Control headers

AddOutputCache

Usługę należy zarejestrować za pomocą AddOutputCache.

builder.Services.AddOutputCache();

UseOutputCache

Oprogramowanie pośredniczące należy dodać do potoku za pomocą UseOutputCache. Powinno ono znajdować się za routingiem, a jeśli jest używany mechanizm CORS — również za nim.

var app = builder.Build();

app.UseOutputCache();

app.MapControllers();

CacheOutput na endpointzie

Włącz buforowanie dla endpointu za pomocą CacheOutput (minimal API) lub atrybutu [OutputCache] (kontrolery).

app.MapGet("/products", GetProducts)
   .CacheOutput();

// Controller:
// [OutputCache]
// public IActionResult Get() => Ok(...);

Ustawianie czasu wygaśnięcia

Kontroluj, jak długo odpowiedź pozostaje w cache, za pomocą Expire.

app.MapGet("/products", GetProducts)
   .CacheOutput(policy => policy.Expire(TimeSpan.FromSeconds(30)));

Co jest buforowane

Domyślnie buforowane są tylko żądania GET i HEAD ze statusem 200 i tylko wtedy, gdy nie występuje Set-Cookie ani autoryzacja - przypadkowe buforowanie uwierzytelnionych odpowiedzi zależnych od użytkownika jest niebezpieczne.

// Cached by default: GET/HEAD, 200, no cookies/auth

Różnicowanie według parametrów zapytania

Dwa żądania do tej samej ścieżki, ale z różnymi ciągami zapytania, zwykle powinny być buforowane osobno. Użyj SetVaryByQuery.

app.MapGet("/search", Search)
   .CacheOutput(policy => policy
        .Expire(TimeSpan.FromSeconds(60))
        .SetVaryByQuery("q", "page"));

Różnicowanie według nagłówka

Klucz cache można różnicować na podstawie nagłówków - na przykład, aby udostępniać inną buforowaną kopię dla każdej wartości Accept-Language.

policy.SetVaryByHeader("Accept-Language");

Bazowa polityka dla wszystkich endpointów

AddBasePolicy stosuje ustawienia domyślne do każdego endpointu, które poszczególne endpointy nadal mogą nadpisać.

builder.Services.AddOutputCache(options =>
{
    options.AddBasePolicy(policy =>
        policy.Expire(TimeSpan.FromSeconds(10)));
});

Wyłączanie buforowania dla endpointu

Jeśli bazowa polityka buforuje wszystko, wyklucz dynamiczne endpointy za pomocą NoCache.

app.MapGet("/cart", GetCart)
   .CacheOutput(policy => policy.NoCache());

Szybki test

Proszę potwierdzić różnicę między tymi dwiema funkcjami buforowania.

Podsumowanie

Poznali Państwo podstawy buforowania odpowiedzi:

  • AddOutputCache + UseOutputCache włączają buforowanie po stronie serwera.
  • CacheOutput / [OutputCache] włączają endpointy do buforowania; Expire ustawia czas trwania.
  • Domyślnie buforowane są tylko odpowiedzi GET/HEAD ze statusem 200, bez autoryzacji i ciasteczek.
  • SetVaryByQuery i SetVaryByHeader określają klucz cache.

Następnie: polityki cache i unieważnianie.

Często zadawane pytania

Czy lekcja „Podstawy buforowania odpowiedzi” jest bezpłatna?

Tak — pełny tekst „Podstawy buforowania odpowiedzi” 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 C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podstawy buforowania odpowiedzi”?

Buforuj odpowiedzi, aby ograniczyć obciążenie. Ćwiczysz C# 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ąć C# Academy?

Nie wymagamy żadnego doświadczenia. C# 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 3 z 4.

Ile czasu zajmuje lekcja „Podstawy buforowania odpowiedzi”?

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 C# Academy?

Tak. Każda lekcja C# 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

  1. Algorytmy ograniczania przepustowości
  2. Konfigurowanie oprogramowania pośredniczącego ograniczania przepustowości
  3. Podstawy buforowania odpowiedzi
  4. Zasady buforowania i unieważnianie
← Powrót do C# Academy