設定
現在のプロジェクトでは、AFNetworking (Foundation URL Loading System に基づく) を使用しています。これまでのところ、すべて正常に動作しています。
仮説
最近、応答ヘッダーに ETag を導入しました。これは、デフォルトで NSURLConnection (Foundation URL Loading System を意味します) で処理する必要があります。受信した ETag 値 (応答から) は、次の要求ヘッダーに「If-None-Match」として含める必要があります。それが理論です。
実際には、ETag は整数であり、バックエンドは有効なリクエストごとにこの整数を増加させ、この増加した値を応答ヘッダーで送信します。
クライアントでは何も変更せず、charles でリクエストとレスポンスのヘッダーをチェックしました。キャッシングを統合する予定はありません。ETag 値の処理にのみ関心があります。
結果
結果は本当に奇妙です。最初のリクエスト (約 10 件のリクエスト) では、「If-None-Match」ヘッダー フィールドは設定されませんでした。この期間の後、一部のリクエストについてはすべて問題ありません。最後に受信した ETag 値は、次のリクエストの「If-None-Match」ヘッダー フィールドで送信されます。その後、約 30 回のリクエストの後、「If-None-Match」ヘッダー フィールドの値は想定された値ではありません。たとえば、最後に受信した ETag 値は 38 で、リクエストの「If-None-Match」値は 8 です。
| | リクエスト (If-None-Match)| 応答 (ETag) | 予想 | | | ---------------------- |------------------|-------- --| | | | | 1 | はい | | | | | 2 | いいえ!| | | | | | 3 | いいえ!| | | | ... | ... | ... | | | 11 | 12 | はい | | | 12 | 13 | はい | | | 13 | 14 | はい | | | ... | ... | ... | | | 30 | 31 | はい | | | 8 | ? | | いいえ!| |
質問
NSURLConnection (Foundation URL Loading System を意味します) で ETag がどのように処理されるか、およびこれらの奇妙な結果が表示される理由について、経験または知識がある人はいますか?
またはさらに直接的に、問題を解決するためのヒントや練習方法はありますか? NSURLCache などに特定の値を設定する必要がありますか?