Sto pensando al modo migliore per creare un livello cache nella parte anteriore o come primo livello per le richieste GET alla mia API RESTful (scritta in Ruby).Il modo migliore per memorizzare i risultati dell'API RESTful delle chiamate GET
Non tutte le richieste possono essere memorizzate nella cache, perché anche per alcune richieste GET l'API deve convalidare l'utente/l'applicazione richiedente. Ciò significa che ho bisogno di configurare quale richiesta è memorizzabile nella cache e per quanto tempo ogni risposta in cache è valida. Per alcuni casi ho bisogno di un tempo di scadenza molto breve, ad es. 15 secondi e oltre. E dovrei essere in grado di lasciare scadere le voci della cache dall'applicazione API anche se la data di scadenza non è stata ancora raggiunta.
ho già pensato a molte soluzioni possibili, i miei due migliori idee:
primo strato di API (anche prima del routing), la logica di cache da solo (per avere tutte le opzioni di configurazione in mano) , risposte e la data di scadenza memorizzati Memcached
un proxy server web (ad alta configurabile), forse qualcosa come Squid, ma non ho mai usato un proxy per un caso come questo prima e io non sono assolutamente sicuro su di esso
Ho pensato anche a una soluzione cache come Varnish, ho usato Varnish per le "solite" applicazioni web ed è impressionante ma la configurazione è piuttosto speciale. Ma lo userei se fosse la soluzione più veloce.
Un'altra idea era quella di memorizzare nella cache l'indice Solr, che sto già utilizzando nel livello dati per non interrogare il database per la maggior parte delle richieste.
Se qualcuno ha un suggerimento o delle buone fonti da leggere su questo argomento, fammi sapere.
Grazie, ho letto di postare e un po 'di Rack :: Cache. È interessante e darò un'occhiata più da vicino. – maddin2code
Sul tuo blocco ho visto che stai usando Varnish, suppongo che Varnish restituirà il risultato memorizzato nella cache se l'URI e anche "ETag" corrispondono al risultato memorizzato, giusto? – maddin2code
Non ho mai usato Varnish in modo esplicito, ma sembra che Heroku ora stia usando Varnish nel loro stack Cedar per il contenuto nella cache. Tutto il materiale ETag dovrebbe ancora essere applicato –