Life is beautiful: 「さおだけ」がミリオンセラーになった本当の理由
http://satoshi.blogs.com/life/2007/06/post_1.html
さてはて、でかける前にエントリーを一つと思い、↑のエントリーを読んでしまい、タイトルが決まらない。今日は良い天気だ。
<resource>要素の話。
この要素、便利なのはご存知の通り。例えば画像をキャッシュするのに使う。バックグラウンドで画像をキャッシュすることで、うまくやれば、ダウンロードを意識させずに携帯電話でもスライドショー等ができる。携帯電話もまだまだ回線速度が遅いので、ダウンロード時間が苦痛なときがある。そんなときに使うわけだ。
とはいっても、端末のメモリは有限で、いくらでもキャッシュできるわけではない。これが厄介。キャッシュが一杯になると、なんらかの法則で削除していく。あまり使われないものから優先的に削除するという仕組。
例えば、スライドショーを考えよう。画像をA,B,C,D,,,といった具合に表示させるとき、A→B→C→Dとキャッシュするように実装する。こうするとさくさく画像が切り替わるようになる。
しかしである。Dをキャッシュするときに一杯になると、Aから消される可能性が高い(あくまで可能性、細かい話は今度)。そうすると、
A:表示中
B:次に表示
C:Bの次に表示
D:Cの次に表示、一杯なのでどれか削除、、Aは表示中だからBかな?
といった具合で、Aの次の画像Bを表示させるときには、Bのキャッシュが削除されているのだ。そして、画像Bのダウンロードが始まってしまう。これは意図するところではない。
そういったことにならないように、メモリサイズも考えつつ適宜実装する必要がある。(※あれ、前にも書いたかな?)