質問

Tronadoを実行しているサーバーに接続するためにAFNETWORKINGを使用するIOSアプリを構築しています。サーバーには、応答内のヘッダーCache-Control: private, max-age=900が含まれています。ローカルマシンでサーバーを実行するときは、AFNetworkingがアプリからの繰り返し要求で受信された要求がないため、AFNetworkingがキャッシュされた値を使用することを確認できます。同じTornadoサーバーをテストマシンに展開すると、アプリからの各要求はサーバー上で受信された要求をもたらし、キャッシュされた値を無視します。

2つの設定の唯一の違いは、サーバーのURLと、Test ServerがHTTPS接続を介してアクセスされ、LocalHostはHTTPを使用します。HTTPSはAFNETWORKINGによってキャッシュに影響を与えます。そうであれば、キャッシュヘッダーを尊重するためにAFNETWORKINGを取得するにはどうすればいいですか?

役に立ちましたか?

解決

それが助けになるつものであるかどうかがわからないが、ここではそれがとにかく: AFNETWORKINGは、NSURLCACHE共有キャッシュを使用するNSURLConnectionを使用します。 Afnetworkingはキャッシュに関して絶対に透過的であり、何も具体的にはしません。 私の要求はhttpsであり、大丈夫です。

キャッシュコントロール応答ディレクティブにより、オリジンサーバーは応答のデフォルトのキャッシュ可能性を上書きできます。 民間 応答メッセージの全部または一部が単一のユーザーを対象とし、共有キャッシュによってキャッシュされてはならないことを示します。これにより、オリジンサーバーは、指定された部分を述べることができます。 応答は1人のユーザーのみを対象とし、他のユーザーによる要求に対する有効な応答ではありません。プライベート(共有されていない)キャッシュが応答をキャッシュすることがあります。 http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html# SEC14.9.1

許容できる場合は、ポリシーを公開に変更しようとします。 アプリからの応答にヘッダーをログに記録し、あなたのcache.dbを見て、実際に何かがそこにキャッシュしているかどうかを確認してください。

共有キャッシュを設定しよう -

の行に沿ったもの
int cacheSizeMemory = 1*1024*1024; // 4MB
int cacheSizeDisk = 100*1024*1024; // 100MB
[[NSURLCache sharedURLCache] setMemoryCapacity:cacheSizeMemory];
[[NSURLCache sharedURLCache] setDiskCapacity:cacheSizeDisk];
.

これについてこれについてもう一つ読んでください http://petersteinberger.com/blog/2012/NSURLCACHE-USES. -a-ディスクキャッシュ - IOS5 /

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top