Come sempre, dipende. Il caching può migliorare le prestazioni ovunque tra "whopping" e "not affatto", o anche ridurre le prestazioni.
Se la tua risorsa viene letta spesso ma raramente cambiata, il caching di solito è una buona idea, soprattutto quando la sua generazione non è banale. Se, tuttavia, cambia ogni richiesta, non è possibile memorizzarla nella cache.
Inoltre, può essere utile utilizzare diversi livelli di memorizzazione nella cache, ad esempio una cache di risposta a livello HTTP che fornisce risposte identiche a richieste identiche, una cache di memoria che contiene set di dati prontamente elaborati, un'altra cache che contiene blocchi di dati grezzi dati per ulteriori elaborazioni e, naturalmente, la memorizzazione nella cache fornita con i database e i file system. Il motivo per cui vuoi memorizzare nella cache a diversi livelli è che ci sono diversi punti in cui puoi confrontare condizioni identiche con risultati identici e vuoi memorizzare nella cache ogni volta che ha senso.
Un altro fattore che devi tenere a mente è che la maggior parte dei dati non deve essere disponibile in tempo reale. È spesso accettabile presentare dati che sono, ad esempio, vecchi di un'ora o giù di lì, anche quando esistono dati più recenti. In tal caso, è possibile generare la risorsa in un processo separato, servendo la versione precedente fino a quando viene eseguita la nuova, quindi eseguendo una sostituzione atomica rapida (ad es. Rinominando un file o un'operazione di database atomico). In questo modo, ottieni sempre le massime prestazioni in qualsiasi momento, mentre puoi comunque permetterci di impiegare un po 'di tempo a generare la risorsa. E, meglio ancora, il generatore può funzionare su una macchina diversa se necessario, in modo da non impantanare il server web stesso. Ovviamente non fa male aggiungere uno strato di cache nella parte superiore di quello; dopotutto, servire dalla RAM è ancora un ordine di grandezza più veloce di quello che serve dal disco.