3

これは、他の人にも役立つかもしれない簡単な質問です。
エンドポイントでの各 GET クエリに対して適切な ETAG ヘッダーを返す残りのサービスがあります。
ここで、これらのエンドポイントにクエリを実行して etag を利用するために、curl http クライアントも作成する必要があります。
私の理解では、curl で最初のリクエストを行った後、返された etag を後で使用するために保存する必要があります。これにより、サーバーが 304 ヘッダーを返すため、その後のすべてのリクエストで (etag がサーバーで無効になるまで)、キャッシュされたバージョンを使用できます。と空の応答。
これは正しいです?

このhttpクライアントは多くのサーバーに分散され、curl自体は返されたコンテンツを保存できないことを念頭に置いて、sqliteやfsキャッシュなどを使用して自分で保存する必要があると思います.
これは正しいです?

基本的に私が考えているワークフローは次のようになります:
1. サーバー エンドポイントに最初の curl 要求 (GET) を作成します
。 2. サーバーは適切な etag とコンテンツを含む http コード 200 を返します
。 sqlite または fs を使用する
4. 同じエンドポイントへの次の呼び出しで、etag 値を含む If-None-Match ヘッダーを送信する
5. サーバーが If-None-Match ヘッダーを検証する
5.a - コンテンツが変更されていない、304 ヘッダー返され、応答がありません。それに基づいて、ローカルにキャッシュされたコンテンツを sqlite または fs から読み込みます。
5.b - コンテンツが変更され、200 ヘッダーが新しい etag と共に返送されます。それに基づいて、次回のために新しい etag とコンテンツを保存します。
6. サイクルが繰り返される

これは正しいです?

4

1 に答える 1