Il modo più semplice per rendere un'app Rails veloce è non rifare il lavoro costoso. Rails.cache.fetch calcola una volta e ricorda.

def statistiche_lanci
  Rails.cache.fetch("stats/launches", expires_in: 1.hour) do
    {
      totale: Launch.count,
      per_anno: Launch.group_by_year(:net).count,
      successi: Launch.success.count,
    }
  end
end

La prima chiamata esegue il blocco (le query pesanti) e salva il risultato; le successive, per un'ora, restituiscono il valore memorizzato in millisecondi. Alla scadenza si ricalcola.

La domanda giusta è: "questo dato è costoso da produrre e cambia di rado?". Se sì, è un candidato perfetto per la cache. Statistiche, classifiche, risposte di API esterne.

Attento a due cose: scegliere una chiave che identifichi bene il dato, e invalidare la cache quando i dati cambiano davvero. Il caching è potente, ma dati vecchi mostrati come nuovi sono un bug.