私の質問はとても簡単です。調べてみても、簡単で満足のいく答えは見つかりませんでした。
サーバーからデータを取得するために Jquery ajax リクエストを使用しています。サーバーは、Etag および Cach-control ヘッダーを に設定する REST API をホストします
GET requests
。また、サーバーは CORS ヘッダーを設定して、Etag
. API のクライアントはブラウザー Web アプリです。Ajax リクエストを使用して API を呼び出しています。以下は、単純な GET 要求の後のサーバーからの応答ヘッダーです。
Status Code: 200 OK
Access-Control-Allow-Origin: *
Cache-Control: no-transform, max-age=86400
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: application/json
Date: Sun, 30 Aug 2015 13:23:41 GMT
Etag: "-783704964"
Keep-Alive: timeout=15, max=99
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Vary: Accept-Encoding
access-control-allow-headers: X-Requested-With, Content-Type, Etag,Authorization
access-control-allow-methods: GET, POST, DELETE, PUT
私が知りたいのは:
サーバーから送信されたレスポンス ヘッダーから手動で収集し、ヘッダーを ajax リクエストにEtag
添付する必要がありますか?または、「Etag」がある場合if-no-match
、ブラウザーはデフォルトでリクエストでそれを送信しますconditional get
ブラウザのネットワーク コンソールを介してデバッグを行いましたが、ブラウザが
conditional GET
自動的に実行しているようで、if-no-match
ヘッダーが設定されています。それが正しければ、新しいリソースを作成し、get リクエストを呼び出したとします。過去にキャッシュされたデータが初めて表示されます。しかし、ページをリロードすると、更新されたページが表示されます。サーバー側のデータセットが変更され、別
Etag
の .
- ページネーションの場合も。URL があるとします
/users?next=0
。next is a query param
の値は、next
新しいリクエストごとに変化します。各応答は独自の「Etag」を取得するためです。ブラウザはリクエストに基づいて「Etag」を保存しますか、それともEtag
URL に関係なく、前回の get リクエストの最新のものを保存するだけですか。