Strategia di Caching: Ottimizzazione delle Prestazioni a Multi-Livello

Questo articolo spiega come utilizziamo il caching a ogni livello per garantire caricamenti di pagina rapidi a livello globale.

Il Problema: Le Richieste Senza Cache Sono Lente

Senza caching, ogni caricamento di pagina richiede:

  • Query al database: Recupero di dati prodotto, livelli di stock, prezzi

  • Chiamate API: Servizi esterni per tariffe di spedizione, pagamenti

  • Calcoli: Calcoli dei prezzi, verifiche della disponibilità

  • Caricamento immagini: Immagini prodotto, miniature

Il caching elimina il lavoro ripetuto memorizzando i risultati per il riutilizzo.

La Soluzione: Caching Multi-Livello

Effettuiamo il caching a cinque livelli:

  1. Cache del browser: Il dispositivo dell'utente memorizza le risorse statiche
  2. Cache della CDN: Le edge location di CloudFront memorizzano i contenuti globalmente
  3. Cache dell'applicazione: Valkey memorizza i dati a cui si accede frequentemente
  4. Cache del database: Valkey si posiziona davanti al database
  5. Cache dell'IA: DeepSeek memorizza le richieste di sistema (prompt)

Livelli di Caching

Caching del Browser (CloudFront)

CloudFront fornisce il caching del browser con TTL appropriati:

  • Immagini: TTL lungo (24-72 ore)

  • CSS/JS: Versionati con cache-busting

  • Risposte API: TTL breve o nessuna cache

Caching della CDN (CloudFront)

CloudFront memorizza i contenuti nelle edge location:

Caching dell'Applicazione (Valkey)

Valkey fornisce il caching in memoria:

  • Sessioni: Sessioni utente con scadenza variabile (sliding expiry)

  • Query popolari: Termini più cercati

  • Autocompletamento: Suggerimenti di ricerca

  • Conteggi prodotto: Disponibilità dello stock

  • Mappature di frasi: Dati per l'estrazione dei filtri

Caching del Database

Valkey si posiziona davanti al database:

  • Dati prodotto: Memorizzati in cache per le prestazioni

  • Costi dei componenti: Memorizzati per i calcoli dei prezzi

  • Elenchi SKU: Memorizzati per gli elenchi prodotti

  • Manifesti delle immagini: Memorizzati per il caricamento delle immagini

Caching dell'IA (DeepSeek)

DeepSeek fornisce il caching delle richieste (prompt):

  • Prompt di sistema: Memorizzati per l'efficienza

  • Cache hit: Riduzione dell'utilizzo di token

  • Cache miss: Generazione di nuovi contenuti

Caching delle Traduzioni

Il caching delle traduzioni utilizza più livelli:

  • Valkey: Tabelle di frasi memorizzate in memoria

  • File: Tabelle di frasi archiviate in modo persistente in file JSON

  • Fallback: Cache legacy basata su hash per la compatibilità con le versioni precedenti

Invalidazione della Cache

Invalidiamo le cache quando:

  • Aggiornamenti prodotto: Invalidazione delle cache prodotto

  • Cambiamenti stock: Invalidazione delle cache dei conteggi stock

  • Aggiornamenti contenuti: Invalidazione delle cache delle pagine

  • Aggiornamenti traduzioni: Invalidazione delle cache di traduzione

Organizzazione della Cache

Le cache Valkey sono organizzate per funzione:

  • Sessioni: Stato di autenticazione utente

  • Autocompletamento: Dati per i suggerimenti di ricerca

  • Query popolari: Termini cercati frequentemente

  • Mappature di frasi: Dati per l'estrazione dei filtri

  • Costi dei componenti: Dati per il calcolo dei prezzi

Riepilogo

La nostra strategia di caching offre:

  • Multi-livello: Browser, CDN, applicazione, database

  • Efficienza: Valkey per accesso rapido in memoria

  • Intelligenza: Caching dei prompt di IA per il risparmio dei costi

  • Affidabilità: Meccanismi di fallback multipli