8

パフォーマンスを大幅に向上させるために、インデックス (GET /foo) と読み取りアクション (GET /foo/1) の JSON 応答をキャッシュする REST API があります。リソースに POST または PUT がある場合、インデックスと読み取り結果のキャッシュ エントリを期限切れにする必要があるため、古いコンテンツは提供されません。

これは、Squid / Varnish のようなリバース プロキシで行うのが最適なシナリオですか、それとも memcache(d) を選択しますか?

4

3 に答える 3

9

HTTP レイヤー上にあるリバース プロキシを使用すると、より透過的になります。つまり、回線上で何が起こっているかを確認できるということです。悪い点は、認証された応答のキャッシュをサポートしているものはほとんどないため、リソースで認証が必要な場合、効率が 0 に低下する可能性があることです。/fooリバース プロキシは、通常、リソース A ( ) とはまったく関係のないリソース B ( /foo/1) が変更されたときに、リソース A ( ) を自動的に期限切れにすることもありません。これは、何らかの方法でソリューションに追加する必要がある正しい動作です。

memcached を使用すれば、透過性要件がないため、これらの問題は両方とも解決できます。

于 2010-09-03T15:37:40.380 に答える
2

キャッシュ ロジックを使用せずにサービスを実装 (およびテスト) し、キャッシングを別のレイヤーとして追加できるため、ワニスのようなリバース プロキシを使用します。varnish が GET リクエストの古い結果を提供している間にサービスをアップグレード/再起動できます (可用性に優れています)。特定の GET/POST アクションに基づいて既存のキャッシュ結果を無効化 (パージ) するルールを varnish に簡単に設定できます。

于 2010-09-17T07:52:35.203 に答える
1

分散メモリを使用する場合は、memcached が適切なソリューションです。https://github.com/cpatni/middlemanは、キャッシングに memcached を使用するリバース プロキシです。

于 2010-11-19T23:13:16.800 に答える