REST-API-Caching, sollte ich einen Reverse-Proxy oder Memcache (d) verwenden?

8

Ich habe eine REST-API, in der ich die JSON-Antwort des Indexes (GET / foo) und die Leseaktionen (GET / foo / 1) zwischenspeichern möchte, um die Performance deutlich zu steigern. Wenn für eine Ressource ein POST oder ein PUT vorhanden ist, müssen die Cache-Einträge für den Index und die Leseergebnisse abgelaufen sein, sodass kein alter Inhalt bereitgestellt wird.

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

    
Ward Bekker 03.09.2010, 13:20
quelle

3 Antworten

9

Wenn Sie einen Reverseproxy verwenden, der auf der HTTP-Schicht sitzt, ist transparent . Das bedeutet, dass man sehen kann, was über den Draht passiert. Das Schlimme ist, dass nur wenige von ihnen die authentifizierten Antworten unterstützen, sodass ihre Effizienz auf 0 fallen kann, wenn Ihre Ressourcen eine Authentifizierung erfordern. Umgekehrte Proxys verfallen normalerweise auch nicht automatisch der Ressource A ( /foo ), wenn diese vollständig nicht verwandte Ressource B ( /foo/1 ) modifiziert wird. Das ist das richtige Verhalten, das Sie Ihrer Lösung irgendwie hinzufügen müssten.

Beide Probleme können gelöst werden, wenn Sie memcached verwenden, da die Transparenzanforderung nicht erfüllt ist.

    
mogsie 03.09.2010, 15:37
quelle
2

Ich würde für einen Reverse-Proxy wie Lack gehen, weil Sie Ihren Service implementieren (und testen) können, ohne Cachelogik einzubeziehen, und Caching als separate Schicht hinzufügen. Sie können Ihren Dienst upgraden / neustarten, während Lack alte Ergebnisse für die GET-Anfrage bereitstellt (großartig für die Verfügbarkeit), und es ist einfach, Regeln in Lack einzurichten, um vorhandene Cache-Ergebnisse basierend auf bestimmten GET / POST-Aktionen zu entfernen (zu löschen).

    
ivy 17.09.2010 07:52
quelle
1

Wenn Sie verteilte Speicher memcached verwenden möchten, ist eine gute Lösung. Ссылка ist ein Reverse-Proxy, der memcached zum Caching verwendet.

    
Chandra Patni 19.11.2010 23:13
quelle