Vi mostrerò in due frasi come Livelli di cache interagiscono nel web hosting: La cache del browser fornisce file statici in locale, la cache del server e degli oggetti riduce il PHP e il database, mentre una CDN contenuti ai nodi edge di tutto il mondo. In questo modo, riduco in modo misurabile il TTFB e l'LCP, proteggo l'origine dai picchi di carico e fornisco contenuti freschi grazie a un'abile invalidazione.
Punti centrali
- Cache del browserGli asset archiviati localmente riducono la latenza e le richieste.
- Cache del serverLe pagine HTML prefabbricate riducono al minimo il TTFB.
- Cache degli oggettiI valori chiave basati sulla RAM salvano i risultati del DB.
- Cache CDNLa consegna edge riduce i tempi di caricamento a livello internazionale.
- InvalidazioneRegole intelligenti per mantenere i contenuti aggiornati.
Gerarchia di caching nel web hosting: come si interseca ogni livello
Organizzo il Livelli sempre da vicino a lontano: prima il browser, poi il server, poi la cache degli oggetti, infine la CDN. Questa sequenza evita la duplicazione del lavoro e garantisce che la stazione più veloce serva per prima la richiesta. Evito i conflitti impostando TTL chiari, priorità di intestazione ed esclusioni. Un approccio strutturato come quello del Gerarchie di cache mi fa risparmiare giorni di risoluzione dei problemi. In questo modo, un sito può essere scalato senza che io debba aggiungere risorse in preda al panico durante i picchi di traffico perché il Origine rimane calmo.
Caching del browser: regole che hanno effetto immediato
Mi piace iniziare dal Browser, perché ogni byte conta. Con il controllo della cache, imposto TTL lunghi per le risorse immutabili come .css, .js, .woff2 e immagini. Per i file con un'impronta digitale (ad esempio app.87c1.js), scelgo da 1 a 12 mesi e aggiungo immutabile; per le risorse senza impronta digitale, tendo a scegliere una settimana. Uso ETag e Last-Modified, ma mi affido soprattutto a direttive chiare come public, max-age e s-maxage. In questo modo riduco gli RTT, la larghezza di banda e ottengo risultati migliori. Core Web Vitals.
Mi assicuro di tenere le risorse sensibili o che cambiano frequentemente fuori dalla cache del browser. Posso memorizzare brevemente nella cache i documenti HTML per gli ospiti, ma non i dashboard collegati. Stringhe di query come ?ver= ricaricano lo stesso file per molte configurazioni, quindi preferisco usare nomi di file coerenti con un hash. Ritengo che il numero di URL individuali per le risorse sia basso, in modo che il Cache incontra. Piccole regole all'inizio mi fanno risparmiare molto tempo.
Cache del server: cache della pagina per un TTFB veloce
Accelero il tempo del primo byte tramite Server-caching, ad esempio con Nginx FastCGI, Varnish o LSCache. Il server memorizza le pagine HTML completamente renderizzate, evitando così PHP e il database per gli utenti anonimi. Questo spesso riduce drasticamente il TTFB, soprattutto quando c'è molto traffico. Escludo le aree di login, i cestini degli acquisti e le pagine personalizzate tramite cookie, sessioni o percorsi. Le modifiche ai contenuti attivano la cancellazione automatica, in modo che gli utenti ricevano contenuti freschi. Contenuti ricevuto.
Ho impostato regole granulari: Le pagine delle categorie e dei tag ricevono TTL più lunghi rispetto alla homepage, che aggiorno più frequentemente. Per le configurazioni multilingue, metto in cache ogni lingua separatamente per mantenere tassi di successo puliti. Anche le pagine statiche 404/410 possono essere messe in cache e alleggerire il carico della sorgente. Uso il warmup/preload per assicurarmi che i percorsi importanti siano già nella cache prima dell'arrivo dei picchi. Questo va a vantaggio del Visitatori con il primo clic.
Cache degli oggetti: salvare le query del database e del PHP
Per i siti dinamici mi affido a RAM-cache come Redis o Memcached per memorizzare query, transitori e oggetti complessi. Questo livello viene utilizzato quando la cache della pagina non funziona, ad esempio per gli utenti loggati, i filtri o i prezzi individuali. Le query utilizzate di frequente finiscono nella memoria di lavoro e sono disponibili in microsecondi. Questo riduce notevolmente il carico della CPU e il database tira un sospiro di sollievo. Utilizzo gli spazi dei nomi e l'invalidazione mirata per mantenere il database Negozio pulito.
In WordPress, combino la cache degli oggetti con l'ottimizzazione del database e un TTL ragionevole per gruppo. I progetti e i negozi che fanno uso di API guadagnano costantemente in tempo di risposta. Per gli insiemi di dati molto grandi, segmento le chiavi in modo da poter scartare le sottoaree in modo mirato. Una strategia di chiavi pulite mi impedisce di eliminare inutilmente grandi lotti. Offro un'introduzione compatta con Cache degli oggetti con Redis, che evita i tipici pericoli di inciampo e di Latenza bassi.
CDN cache: consegna globale ai margini
Uso un CDN, per portare i contenuti vicino all'utente e dimezzare i tempi di accesso internazionali. I server edge memorizzano nella cache gli asset, eventualmente anche l'HTML, e li distribuiscono dalla regione del visitatore. In questo modo si riducono i salti, si protegge l'origine durante i picchi di traffico e si riducono i costi. Attivo lo stale-while-revalidate, in modo che i visitatori ricevano immediatamente una versione anche in caso di ritardi del backend. I TTL regolati per tipo di file assicurano la freschezza, senza che il Tasso di successo mettere a repentaglio.
Per la memorizzazione nella cache dell'HTML tramite la CDN, definisco regole di esclusione chiare per i cookie, le sessioni e i percorsi di amministrazione. Uso nomi di host indipendenti per le risorse statiche, in modo che i browser possano caricarle in parallelo. Per i servizi di immagini, mi affido all'ottimizzazione al volo e faccio un uso ragionevole di accept/content DPR. Un articolo su Configurazione CDN aiuta a evitare le tipiche configurazioni errate. Questo è il modo in cui sfrutto i punti di forza di bordo senza effetti collaterali.
Pratica di WordPress: come combinare i livelli
Combino la cache delle pagine, la cache degli oggetti e la cache del browser con il minimo rischio di contenuti obsoleti. Per molti siti è sufficiente una cache di pagina per gli ospiti, integrata da una cache di oggetto per i ruoli connessi. Imposto deliberatamente regole HTML e cookie in modo che i cestini degli acquisti, i moduli e le iscrizioni rimangano corretti. Collego poi un CDN e do alle risorse un TTL lungo, perché gli hash dei file garantiscono l'aggiornamento. Dopo l'aggiornamento dei contenuti, avvio una pulizia mirata al fine di Rilevanza garantire.
Plugin come WP Rocket, LiteSpeed Cache o W3TC coprono molti elementi costitutivi; io verifico sempre Minify e Combine passo dopo passo. Verifico i CSS critici e differisco le strategie con lo staging, in modo da non bloccare il rendering. Per WooCommerce, faccio attenzione alle eccezioni per il carrello, il checkout e il mio account. I precarichi controllati da Cron mantengono calde le pagine importanti. Questo mi permette di essere veloce, coerente e Scalabile.
Misurare ciò che conta: TTFB, LCP, FID e larghezza di banda
Misuro il TTFB per valutare la Origine e LCP per la velocità percepita. Una solida cache del server spesso spinge il TTFB ben al di sotto dei 200-300 ms, soprattutto per le richieste ripetute. Una buona cache del browser e del CDN migliora sensibilmente l'LCP perché le risorse di grandi dimensioni non tornano indietro dall'origine. Monitoro FID o INP se uso molto JavaScript e uso selettivamente defer/preload. L'ampiezza di banda e le richieste diminuiscono quando utilizzo gli hash dei file in modo coerente e uso l'opzione Browser lavoro.
Controllo regolarmente la prima visualizzazione rispetto alla ripetizione per valutare realisticamente l'effetto della cache del browser. I confronti tra paesi mi mostrano se le posizioni dei bordi coprono bene i miei mercati target. Tengo traccia delle percentuali di successo dei bordi per individuare i percorsi deboli e mettere a punto i TTL. Per i rilasci, pianifico finestre di manutenzione con traffico moderato, in modo da evitare che gli spurghi vadano a vuoto. Una routine di misurazione pulita evita costosi Errori.
Confronto dei livelli di caching: Compiti, regole, strumenti
Utilizzo questa tabella come Scheda informativa per le decisioni quotidiane. Mostra cosa memorizza ogni livello, come imposto i TTL e dove li escludo. Questo mi permette di fare aggiustamenti rapidi senza tentativi ed errori e di rimanere flessibile quando si tratta di aggiornamenti. Il confronto riguarda anche gli strumenti di WordPress che funzionano in modo affidabile in molte configurazioni. Con criteri chiari, garantisco una qualità costante Prestazioni.
| Livello | Negozi | Raccomandazione TTL | Bypass per | Effetto | Strumenti WP |
|---|---|---|---|---|---|
| Cache del browser | CSS, JS, caratteri, immagini | 1 settimana - 12 mesi (con hashish) | HTML dinamico, Admin | Meno richieste, migliore LCP | WP Rocket, W3TC (intestazioni) |
| Cache del server (pagina) | Pagine HTML renderizzate | 5 min - 24 h (in base al percorso) | Accesso, Carrello, Cassa | TTFB inferiore, meno CPU | Nginx FastCGI, Varnish, LSCache |
| Cache degli oggetti | Query DB, transitori | 30 secondi - 1 ora (in gruppo) | Dati critici in tempo reale | Visualizzazioni dinamiche più veloci | Redis/Memcached + W3TC |
| Cache CDN | Risorse, HTML opzionale | 1 h - 30 giorni (tipo di file) | HTML personalizzato | Meno latenza a livello globale | CDN + integrazione dei plugin |
Errori tipici e come evitarli
Vedo spesso contraddizioni Intestazione, come le scadenze lunghe, ma il controllo della cache: no-store dei plugin. Questi conflitti portano a risultati incoerenti e irritano i proxy. Riordino le direttive e applico una regola chiara per ogni risorsa. Un altro classico: la memorizzazione nella cache dell'HTML per un tempo eccessivamente lungo nel browser, causando ai lettori la visualizzazione di contenuti vecchi. Impostiamo tempi brevi per l'HTML e utilizziamo meccanismi di epurazione in modo che la Alimentazione rimane aggiornato.
Un collo di bottiglia frequente è causato dalle stringhe di query, che il CDN tratta come risorse separate. Riduco al minimo i parametri non necessari o li normalizzo ai margini. La memorizzazione nella cache delle aree in cui si è effettuato l'accesso porta anche al logout o alla perdita del carrello. Lo controllo rigorosamente tramite i cookie e cancello i segnali di rottura della cache. Quando si ottimizzano le immagini, alcuni strumenti distruggono gli ETag; io uso un sistema coerente. Cifre, in modo che i clienti possano convalidare in modo affidabile.
Convalida della cache: spurgo intelligente, non cieco
Lancio le cache in modo specifico, non globale, per Colpi e salvare il carico. Dopo un aggiornamento, elimino solo le rotte interessate e i feed associati, le sitemap e le varianti di amp. Per i CDN, utilizzo chiavi surrogate o tag in modo che intere famiglie di contenuti scompaiano in un colpo solo. stale-while-revalidate mantiene una copia funzionale pronta nel frattempo. In questo modo, gli utenti possono agire mentre la fonte rimane fresca. rendering.
Io faccio le spurgazioni nei periodi di traffico, perché così rischio di avere meno partenze a freddo. Un riscaldamento automatico riempie di nuovo la cache. Per i negozi, creo regole che aggiornano le pagine di dettaglio dei prodotti dopo le variazioni di prezzo o di stock. Per le riviste, i nuovi articoli vengono cancellati anche dalla homepage e dalle categorie pertinenti. Più lavoro in modo granulare, più il sito è stabile. Prestazioni per le modifiche.
Scegliere un hosting con un focus sulla cache
Scelgo un hosting con una forte PilaNginx/LSCache, HTTP/2 o HTTP/3, Redis/Memcached e un PHP-FPM snello. I fornitori che hanno integrato la cache FastCGI e gli spurghi automatici mi fanno risparmiare molti plugin. Per un numero elevato di visitatori, una configurazione con cache a oggetti e connessione CDN ripaga più volte. Nei test, webhoster.de ha sempre ottenuto ottimi risultati con la cache Nginx, Memcached e piani scalabili. Ecco come ottengo tempi di risposta brevi senza esotici Trucchi.
I limiti trasparenti aiutano nella pianificazione: descrittori di file aperti, I/O, RAM e lavoratori. Verifico se il backend mostra le metriche relative alla frequenza di risposta della cache, alla tolleranza ai guasti e alle statistiche sui bordi. I backup devono essere eseguiti indipendentemente dalla cache, in modo che le istantanee rimangano coerenti. Lo staging con una logica di cache identica evita sorprese durante il rollout. Un controllo accurato in questo caso vi farà risparmiare costi costosi in seguito. Restituzioni.
Un piano passo dopo passo per un impatto immediato
Inizio con una pulizia Patrimonio-Piano: hash dei file per CSS/JS/Fonts, poi TTL lunghi del browser. Poi attivo la cache della pagina sul server, imposto regole per le eccezioni e aggiungo il preload. Poi abilito Redis/Memcached per le parti più pesanti dal punto di vista delle query. Poi collego una CDN, imposto i TTL dei bordi e lo stale-while-revalidate e misuro di nuovo. Infine, ottimizzo le immagini, elimino i bundle JS non necessari e controllo Core Vitali con dati di laboratorio e di campo.
Ogni volta che faccio una modifica, controllo la catena: la cache del browser funziona? La cache del server viene consegnata? La cache degli oggetti ha effetto? La risorsa proviene dall'edge? Documento i TTL a livello centrale, in modo da non sovrascriverli accidentalmente. Ho pronti i rollback se una regola è troppo aggressiva. Piccoli test ripetuti mi mostrano gli effetti in modo più chiaro rispetto a un grande lancio. In questo modo il sito web rimane veloce, stabile e mantenibile.
Strategie di intestazione: priorità e impostazione pulita delle vars
Definisco le intestazioni in modo coerente, in modo che ogni Livello sa chiaramente cosa deve fare. Cache-Control batte Expires; s-maxage controlla le cache condivise (CDN, proxy), max-age il browser. Per le risorse immutabili, combino public, max-age, s-maxage e immutable. Imposto selettivamente must-revalidate su HTML se voglio una freschezza rigorosa. Uso il controllo surrogato se voglio che la CDN legga le proprie regole senza sovrascrivere le intestazioni del browser. Se manca un'intestazione, molti proxy indovinano la freschezza: io lo evito. Uso ETag e Last-Modified come validatori; se gli strumenti rompono ETag (ad esempio l'ottimizzazione delle immagini), tendo a fare affidamento su TTL e impronte digitali chiare. Gestisco le contraddizioni (per esempio, no-store con scadenze lunghe) finché non rimane un'unica direttiva non ambigua.
Mantengo Vary al minimo, ma la codifica correct: Accept è standard per gzip/Brotli. Per i formati di immagine, controllo Vary: Accept solo se si tratta di un output tra AVIF/WebP/JPEG. Evito un cookie Vary: globale, perché influirebbe sull'ambiente di lavoro di Tasso di successo Invece, inserisco nella whitelist alcuni cookie rilevanti (come la lingua o la valuta) e mi assicuro che i cookie di tracciamento non abbiano alcuna influenza sulla chiave della cache. Normalizzo i parametri delle query ai margini: rimuovo i parametri UTM e mantengo la paginazione e i filtri. In questo modo la chiave rimane stabile e sensibilmente segmentata.
Design della chiave della cache: personalizzazione senza perdita di cache
Definisco ciò che il Chiave della cache moduli: Schema, host, percorso e stringhe di query pulite sono la base. Separo deliberatamente le varianti di lingua o di Paese, tramite sottodominio, prefisso di percorso (/de/, /en/) o tramite whitelist di cookie nel CDN. Imposto la suddivisione per dispositivo (mobile/desktop) solo se l'HTML o i media sono davvero diversi; altrimenti una chiave comune è più favorevole. Per i negozi, divido anche per valuta o IVA per mantenere coerente la visualizzazione dei prezzi. Elimino dalla chiave tutto ciò che non è rilevante in termini di contenuto: questo aumenta la Tasso di successo.
Preferisco risolvere la personalizzazione con PunzonaturaLa maggior parte della pagina è memorizzabile nella cache, le piccole aree (saluti, icona del carrello, raccomandazioni) vengono ricaricate tramite AJAX/Fetch o utilizzo dei segnaposto simili a quelli dell'ESI sulla pagina Bordo. In questo modo l'HTML e le query costose rimangono nella cache, mentre gli utenti vedono correttamente i singoli elementi. Per i dati sensibili, imposto cookie/richieste firmate e tengo deliberatamente questi endpoint fuori dalle cache condivise. Risultato: pagine veloci senza sacrificare la sicurezza.
Resilienza: strategie di stallo e protezione dagli effetti del gregge
Lavoro con Morbido e TTL rigidoDopo che il soft TTL è scaduto, un proxy può ancora utilizzare stale-while-revalidate mentre il nuovo rendering avviene in background. In caso di problemi del backend, si usa stale-if-error, in modo che gli utenti continuino a ricevere le risposte. Ho distribuito il jitter (varianza casuale) nei TTL, in modo che non tutti gli oggetti diventino obsoleti nello stesso momento e che un Stampede innesco. Il pre-caching caldo e pianificato dei percorsi importanti prima delle campagne evita le partenze a freddo.
Riduco al minimo gli effetti del gregge Richiesta di collasso (solo una richiesta di origine per chiave) e impostare tempi di blocco brevi se sono in corso molte riconvalide simultanee. Un origin shield tra edge e origin bundle accede e protegge il database. Uso TTL brevi per le cache negative (ad esempio 404), in modo che i nuovi contenuti siano visibili rapidamente; non metto quasi mai in cache gli errori 5xx o solo per un tempo molto breve. Mantengo stabile l'origine con un budget pulito per i tentativi e un backoff, anche se le API esterne si bloccano.
Sicurezza e conformità nella cache
Prevengo coerentemente le fughe di dati: per le aree con PII, account o admin, imposto private/no-store e mi assicuro che le risposte con autorizzazione o cookie impostati non finiscano accidentalmente nelle cache condivise. Canonizzo host/schemi in modo che i proxy non mettano in cache varianti miste. Per evitare l'avvelenamento della cache, rimuovo le intestazioni non controllate ai margini (ad esempio, X-Forwarded-* solo da fonti affidabili) e regolo i parametri delle query. Fornisco download e media protetti con URL firmati e di breve durata, invece di metterli in cache apertamente. Per quanto riguarda la conformità, documento i TTL e i purge in modo che i controlli rimangano tracciabili.
Presto anche attenzione alla sicurezza CORS-Regole: Le risposte di preflight ricevono TTL moderati, gli endpoint sensibili rimangono restrittivi. Disattivo rigorosamente la cache per le visualizzazioni di anteprime e bozze. Per i reindirizzamenti (301/302), pondero i TTL in modo da poter gestire rapidamente le migrazioni senza legarmi alle destinazioni sbagliate per settimane e settimane. In questo modo mantengo l'equilibrio tra sicurezza, flessibilità e prestazioni.
Debugging: come controllare gli hit, la riconvalida e la freschezza
Leggo le intestazioni delle risposte: Age, Via o X-Cache-Status mi mostrano hit/miss e riconvalida. In DevTools, confronto la vista First vs. Repeat, controllo 304 convalide e osservo se HTTP-I validatori hanno effetto. Eseguo test con throttling (3G/4G) e cancello specificamente solo la cache del browser o solo la cache del CDN per isolare i livelli. Per l'HTML, misuro le derive del TTFB durante la giornata; le anomalie spesso indicano cache di pagine scadute o regole in conflitto.
Stabilisco semplici CruscottiTasso di successo dei bordi, byte salvati, rapporto di riconvalida e tasso di errore per codice di stato. Contrassegno gli eventi di epurazione per vedere le correlazioni. I controlli sintetici dei mercati di destinazione rivelano salti di latenza o PoP deboli. Sotto carico, verifico se il collasso delle richieste è efficace e se il database rimane costante. Questo mi permette di riconoscere rapidamente dove una piccola regola ha un grande impatto o dove deve essere rallentata.
Messa a punto di WordPress: REST, ricerca e frammenti
Io do il API REST (/wp-json) TTL brevi ma significativi e memorizzano le risposte frequenti nella cache degli oggetti. Le pagine di ricerca (?s=) e i filtri fortemente variabili hanno TTL brevi o bypassano la cache della pagina per mantenere i risultati aggiornati. Gli archivi possono vivere più a lungo, gli alimenti moderatamente. I link di anteprima, i nonces e le azioni di amministrazione sono rigorosamente non memorizzabili nella cache. Mappo i transitori e i gruppi di opzioni in modo pulito su Redis/Memcached, in modo che non diventino obsoleti nel database.
Nei negozi riduco l'imprevedibile FrammentiCarico gli snippet del carrello acquisti/mini-cart in modo specifico e li tengo lontani dalla CDN. Divido i prezzi geolocalizzati solo se legalmente necessario; altrimenti lavoro con la valuta standard e la converto in ritardo. Imposto gli intervalli di heartbeat e cron in modo ragionevole, per non generare invalidazioni permanenti della cache. Regolo anche i parametri delle risorse dai plugin, in modo che non vengano creati nuovi URL praticamente identici a ogni aggiornamento.
Compressione, protocolli e suggerimenti
Consegno Grissino (se disponibile) e il fallback a gzip. Importante: Vary: impostare correttamente la codifica di accettazione e mantenere ETag coerenti per i file precompressi, altrimenti il browser rivalida inutilmente. Ottimizzo le immagini di grandi dimensioni nei formati moderni senza rompere la matrice Vary; se fornisco un formato diverso a seconda dell'accettazione, mantengo le varianti chiaramente separate. I font (woff2) hanno TTL molto lunghi, combinati con font-display: swap per una resa pulita.
Uso Suggerimenti sulle risorse mirati: preconnessione a CDN/ospiti di font, precaricamento di CSS/font critici. Le priorità di HTTP/2/3 aiutano a dare priorità alle risorse importanti; non uso il push di HTTP/2, perché spesso provoca la perdita di dati. Tasso di successo nella cache del browser. I suggerimenti anticipati (103) possono ridurre i tempi di avvio del rendering, se supportati dal server/CDN. I suggerimenti sono supplementari: la base rimane sempre una cache pulita con TTL e hash dei file coerenti.
Distribuzione: atomica, riproducibile, compatibile con la cache
Schieramento atomicoMettere online le nuove risorse con l'hash, distribuire le versioni HTML con i nuovi riferimenti, quindi procedere a cancellazioni mirate utilizzando le chiavi surrogate. In questo modo, le vecchie pagine rimangono funzionanti finché tutti i bordi non sono stati aggiornati. Lancio i grandi cambiamenti a ondate e monitoro le percentuali di successo; se necessario, aumento temporaneamente il TTL per proteggere la fonte. Scagliono le epurazioni in modo che non tutto sia freddo nello stesso momento.
Prima delle migrazioni del database, congelo le regole della cache delle pagine, imposto brevi Finestra di manutenzione e poi preriscaldare le rotte principali. Mantengo la configurazione come codice, in modo che staging e produzione abbiano logiche di cache identiche. Per i rollback, mi affido a un chiaro versioning e a risorse retrocompatibili, in modo che le cache del browser e del CDN non si trovino „tra due fuochi“.
Quando cachet consapevolmente meno
Per i ticker live, i dati azionari, le vendite flash o i cruscotti strettamente personalizzati, scelgo TTL brevi o bypass e mi affido maggiormente alla cache degli oggetti e a query efficienti. Non uso WebSockets/SSE, che non beneficiano della cache classica. Separo i test A/B in modo pulito, in modo che le variazioni non diluiscano la cache. In questo modo mantengo la Prestazioni prevedibile, senza promettere una falsa freschezza.
Per riassumere brevemente: La giusta combinazione fa la differenza
Combino Livelli consapevoli: la cache del browser risparmia le richieste, la cache del server riduce il TTFB, la cache degli oggetti accelera le visualizzazioni dinamiche e la CDN distribuisce globalmente in modo rapido. I dati pratici dimostrano che una strategia coordinata riduce i tempi di caricamento fino al 50% e supporta la conversione. Il massimo vantaggio lo ottengo con TTL chiari, hash coerenti dei file e spurgo in base a regole anziché a sensazioni. L'esame dei valori misurati dopo ogni modifica impedisce la regressione. Se ci si attiene a questa sequenza, si mantiene il controllo sulla freschezza, sui costi e sui costi di gestione. Velocità.
Mi limito a iniziare, a misurare per tempo e ad espandermi passo dopo passo: prima il browser e il server, poi la cache degli oggetti, quindi il CDN. In questo modo, le prestazioni crescono organicamente senza che la manutenzione sfugga di mano. Uso questo metodo per mantenere i siti agili anche durante i picchi. Ogni livello svolge un compito ben preciso e insieme creano una vera e propria Prestazioni.


