Buforowanie i kompresja odpowiedzi API
Przyspieszaj odpowiedzi backendu dzięki buforowaniu w pamięci i rozproszonym warstwom cache, inteligentnemu unieważnianiu pamięci podręcznej oraz zmniejszaniu rozmiaru danych, aby serwery wykonywały mniej pracy przy każdym żądaniu.
Buforowanie i kompresja odpowiedzi API to bezpłatna lekcja Web Performance Optimization & Lighthouse na CoddyKit. To lekcja 4 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 Web Performance Optimization & Lighthouse, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Web Performance Optimization & Lighthouse zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Why Cache on the Backend?
Recomputing the same response for every request wastes CPU and database time. Caching stores computed results so repeat requests return instantly, cutting both latency and load.
Layers of Caching
- In-process memory fastest, but per-instance.
- Distributed cache (Redis/Memcached) shared across servers.
- HTTP/CDN cache at the edge.
A Simple Cache-Aside Pattern
The most common pattern: check the cache, return on hit, otherwise compute, store, and return. This is called cache-aside.
async function getUser(id) {
const hit = await redis.get('user:' + id);
if (hit) return JSON.parse(hit);
const user = await db.findUser(id);
await redis.set('user:' + id, JSON.stringify(user), 'EX', 300);
return user;
}Choosing a TTL
A time to live balances freshness against hit rate. Volatile data needs short TTLs; reference data can live much longer. Always set some expiry to avoid stale buildup.
Invalidation Strategies
The hard part of caching is invalidation. On writes, either delete the affected keys or update them (write-through). Stale data here is a common production bug.
async function updateUser(id, data) {
await db.update(id, data);
await redis.del('user:' + id);
}HTTP Caching Headers
For cacheable API responses, set Cache-Control so browsers and CDNs can reuse them, removing the request entirely on a hit.
res.set('Cache-Control', 'public, max-age=60, stale-while-revalidate=300');Conditional Requests
ETag and If-None-Match let the server reply 304 Not Modified with no body when data is unchanged, saving bandwidth.
res.set('ETag', hashOf(payload));
// next time: if If-None-Match matches, send 304Shrinking the Payload
Return only the fields clients need, paginate large lists, and avoid over-fetching. Smaller payloads serialize faster and transfer quicker.
Compressing Responses
Enable gzip or Brotli on JSON responses. Combined with caching, this minimizes both compute and transfer per request.
const compression = require('compression');
app.use(compression());Avoiding Stampedes
When a hot key expires, many requests may hit the database at once (a cache stampede). Mitigate with locks, request coalescing, or stale-while-revalidate.
Strategy Summary
- Cache-aside with sensible TTLs.
- Invalidate on writes.
- Use Cache-Control and ETags.
- Trim and compress payloads.
- Guard against stampedes.
Quick Check
After a user updates their profile, the API keeps returning the old data for several minutes. What is the most likely cause?
Recap
You learned to cut backend work with layered caching (cache-aside, TTLs, invalidation on writes), HTTP caching via Cache-Control and ETags, payload trimming, and compression, while guarding against cache stampedes.
Często zadawane pytania
Czy lekcja „Buforowanie i kompresja odpowiedzi API” jest bezpłatna?
Tak — pełny tekst „Buforowanie i kompresja odpowiedzi API” 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 Web Performance Optimization & Lighthouse, przejdź na CoddyKit PRO. Kurs Web Performance Optimization & Lighthouse zawiera 4 lekcji w sumie.
Co nauczysz się w „Buforowanie i kompresja odpowiedzi API”?
Przyspieszaj odpowiedzi backendu dzięki buforowaniu w pamięci i rozproszonym warstwom cache, inteligentnemu unieważnianiu pamięci podręcznej oraz zmniejszaniu rozmiaru danych, aby serwery wykonywały… Ćwiczysz Web Performance Optimization & Lighthouse 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ąć Web Performance Optimization & Lighthouse?
Nie wymagamy żadnego doświadczenia. Web Performance Optimization & Lighthouse 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 4 z 4.
Ile czasu zajmuje lekcja „Buforowanie i kompresja odpowiedzi API”?
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 Web Performance Optimization & Lighthouse?
Tak. Każda lekcja Web Performance Optimization & Lighthouse 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
- Wąskie gardła wydajności backendu
- Optymalizacja zapytań do bazy danych
- Wpływ renderowania po stronie serwera (SSR)
- Buforowanie i kompresja odpowiedzi API