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 で指定してもキャッシュを無効にする効果は得られません。

最初、間違えてというか勘でこれを指定してしまい、気づくのに時間がかかってしまったことがあったので、念のためここに記しておくことにします。

[ もどる ]