Frage

Ich habe eine REST-API, wo Ich mag würde die JSON-Antwort des Index (GET / foo) und die Leseaktionen (GET / foo / 1) zwischenzuspeichern, um erheblich die Leistung zu erhöhen. Wenn es eine POST oder eine PUT auf einer Ressource ist die Cache-Einträge für den Index und lesen Ergebnisse abgelaufen werden müssen, so dass keine alten Inhalt serviert wird.

Ist das ein Szenario, das mit einem Reverse-Proxy wie Squid / Lack am besten gemacht wird oder würden Sie wählen memcache (d)?

War es hilfreich?

Lösung

einen Reverse-Proxy verwenden, die auf der HTTP-Schicht sitzt, ist mehr transparent . Das bedeutet, dass es möglich ist, zu sehen, was über die Leitung geht. Das Schlimme ist, dass nur wenige dieser Unterstützung Caching von authentifizierten Antworten , so ihre Effizienz auf 0 fallen können, wenn Ihre Ressourcen Authentifizierung erfordern. Reverse-Proxies haben in der Regel auch nicht automatisch Ressource A (/foo), wenn diese vollständig ohne Bezug Ressource B (/foo/1) modifiziert ist, außer Kraft. Das ist die richtige Verhalten, dass Sie irgendwie zu Ihrer Lösung hinzufügen müßten.

können diese beiden Probleme gelöst werden, wenn Sie Memcached verwenden, da es nicht die Transparenzanforderung hat.

Andere Tipps

würde ich für einen Reverse-Proxy wie Lack gehen, weil Sie Ihren Dienst implementieren können (und Test) ohne Cache-Logik beteiligt, und fügen Sie das Caching als separate Schicht. Sie können ein Upgrade / starten Sie den Service während Lack alte Ergebnisse für GET-Request (ideal für Verfügbarkeit) dient, und es ist einfach zu installieren Regeln in Lack invalide (Purge) vorhandenen Cache Ergebnisse basierend auf spezifischen GET / POST-Aktionen.

Wenn Sie wollen mit verteiltem Speicher beschäftigt Memcached ist eine gute Lösung. https://github.com/cpatni/middleman ist ein Reverse-Proxy, die für das Caching von Memcached verwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top