NSURLRequest でキャッシュを無視して再読み込みする : Objective-C プログラミング
PROGRAM
NSURLRequest でキャッシュを無視して再読み込みする
Objective-C では、NSURLConnection に NSURLRequest を渡して、指定した URL のデータを取得できるようになっています。
このとき、既定では同じ URL へ 2 回目にアクセスしたときには、キャッシュからデータを読み込むようになっているようでしたけど、再読み込みや、Web API にアクセスする場合など、キャッシュのデータを読み込まれると不都合になる場合があります。
そんなときには、NSURLRequest の cachePolicy に NSURLRequestReloadIgnoringCacheData を指定します。
// NSURLRequest では、構築時に cachePolicy を指定できます。
NSURLRequest* request = [[NSURLRequest alloc] initWithURL:url cachePolicy:c timeoutInterval:10.0];
この NSURLRequest を NSURLConnection に渡して通信を開始すれば、キャッシュを無視してリクエストを送信することができます。
なお、NSMutableURLRequest の場合には、インスタンス生成後にも setCachePolicy: メソッドを使って、キャッシュの扱いを指定することもできます。
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setCachePolicy];
ところで、個人的な単なるミスのお話ですけど、Objective-C には他に "NSURLCacheStorageNotAllowed" という定数も用意されています。
なんとなくキャッシュを無効化してくれそうな名前ですけど、今回の "NSURLCacheStorageNotAllowed" とは違う値が割り当てられているため、これを NSURLRequest で指定してもキャッシュを無効にする効果は得られません。
最初、間違えてというか勘でこれを指定してしまい、気づくのに時間がかかってしまったことがあったので、念のためここに記しておくことにします。
[ もどる ]