Der beste Weg, um RESTful API-Ergebnisse von GET-Aufrufen zwischenzuspeichern

Ich denke über die beste Möglichkeit nach, eine Cache-Ebene vor oder als erste Ebene für GET-Anforderungen an meine RESTful-API (in Ruby geschrieben) zu erstellen.

Nicht jede Anforderung kann zwischengespeichert werden, da die API selbst für einige GET-Anforderungen den anfragenden Benutzer / die anfragende Anwendung validieren muss. Das bedeutet, dass ich konfigurieren muss, welche Anforderung zwischengespeichert werden kann und wie lange jede zwischengespeicherte Antwort gültig ist. Für einige Fälle benötige ich eine sehr kurze Verfallszeit von z.B. 15s und darunter. Und ich sollte in der Lage sein, Cache-Einträge von der API-Anwendung ablaufen zu lassen, selbst wenn das Ablaufdatum noch nicht erreicht ist.

Ich habe bereits über viele mögliche Lösungen nachgedacht, meine beiden besten Ideen:

Erste Ebene der API (noch vor dem Routing), Cache-Logik von mir (um alle Konfigurationsoptionen in meiner Hand zu haben), Antworten und Ablaufdatum werden in Memcached gespeichert

ein Webserver-Proxy (hoch konfigurierbar), vielleicht so etwas wie Squid, aber ich habe noch nie einen Proxy für einen solchen Fall verwendet und bin mir absolut nicht sicher

Ich habe auch über eine Cache-Lösung wie Varnish nachgedacht. Ich habe Varnish für "normale" Webanwendungen verwendet und es ist beeindruckend, aber die Konfiguration ist etwas Besonderes. Aber ich würde es verwenden, wenn es die schnellste Lösung ist.

Ein anderer Gedanke war, im Solr-Index zwischenzuspeichern, den ich bereits in der Datenschicht verwende, um die Datenbank für die meisten Anforderungen nicht abzufragen.

Wenn jemand einen Tipp oder gute Quellen zu diesem Thema hat, lass es mich wissen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage