In HTTP 1.1, un server web può restituire una risposta 304 non modificata quando un'intestazione If-None-Match è inclusa nella richiesta GET.
Per l'API REST, ho visto solo implementazioni che coinvolgono il caching lato server dell'intero contenuto della risposta, in cui la cache viene in genere invalidata in successive richieste di modifica della stessa risorsa (come PUT, PATCH o DELETE).
Come forse saprai, l'invalidazione della cache può essere difficile da fare, in particolare quando si ridimensiona o quando l'origine dati sottostante può essere modificata con altri mezzi. Ciononostante, anche senza il caching completo lato server, sicuramente la sola omissione del contenuto della risposta potrebbe produrre un significativo vantaggio in termini di prestazioni.
Supponiamo che un server Web intercetti ogni risposta a una richiesta GET e aggiunga semplicemente un'intestazione ETag che specifica un valore hash per il contenuto della risposta. Quindi, nelle successive richieste GET, l'intestazione If-None-Match può essere elaborata (di nuovo, dopo il fatto) in modo da avere la risposta sovrascritta con una risposta 304 non modificata. Tale implementazione, senza stato o meno, continuerebbe a elaborare prima ogni richiesta GET nell'origine dati sottostante.
Pertanto, la mia domanda non riguarda la riduzione del costo di colpire l'origine dati sottostante (con la memorizzazione nella cache), ma la riduzione del costo della rete.
È un'idea sciocca?
Potrebbe essere utile abilitare su (quasi) tutte le API?