前回発表の宿題(未回答の質問)について調べた
勉強会のMLにも投げたけど、こっちにも記録。
サーバの状態と協調したアクセスができるのか
更新されている場合はネットワークからとってくるけど、そうでならキャッシュを使いたい、というまあふつうのHTTPアクセスだよね。
こたえ:できない
ローカルキャッシュの有効判定先行して、その後必要ならネットワークに取りに行くという構成なので、わりと根本的に直さないと実現できない。いじってどうにかなりそうな箇所はなくもないけど、別の方法(TTURLRequestを使わない)で実現するほうが簡単だと思う。
ディスクキャッシュのサイズ制限はできるか
こたえ:できない
期限は設定できる(invalidationAgeプロパティ)けれど、それを超過したものが自動的に消えたりはしない。てか、まとめて消す方法もない。
なんちゅーか、みんな、的確に弱点をついてくるなあ。。。後者は単なる機能の不足(必要であるとすれば)なので実装は難しくないけど、前者はまあ無理だ。ということでTTURLRequestの使用上の要件として
- そのURLについて、どのようなデータ(画像か、テキストか、など)が返ってくるかを知っていること
の他に
- ある程度の期間について、そのURLの内容が変わらないことを期待できること
というのを追加だな。関連して検証してたんだけど、request.cacheExpirationAgeを指定しない(= 0)ときの動作があやしいぞ(実装というより仕様として)。