slideshow系ライブラリのいけてないところ
javascriptのお話。
現存する全てのライブラリを読んだ訳ではないのだが、一般的に広まってるslideshow系ライブラリのいけてないところは、次の点だと思う。
- 画像を全て読み込んでからslideshowを生成している
今回の
http://pic2ch.giox.org/
の場合、1ページで画像が2000枚を超えることもある為、一度に全て読み込むなんてことはできない。
かといって、画像きりかえ時にダウンロードしていたらパフォーマンスが最悪なので、今回は画像の先読みをした。
画像の先読みはクライアントアプリの画像ビューアである「mangameeya」等でも使われており、現在見ている画像の次の画像を、切り替え前にあらかじめメモリにロードしておき、画像切り替えをストレスなく行えるようにしている。
http://pic2ch.giox.org/でも同じように、現在みてる画像の次の画像をあらかじめダウンロードして、画像の切り替えをストレスなく行うことを実現した。
実装はこんな感じ
var max_preload = 5; var load_images = []; var urls = ['1.jpg', '2.jpg',,,,]; var position = 0; // 画像を切り替える毎にインクリメント var preload = function() { var load_position = load_images.length; if (urls.length == load_position) return; var stock = load_position - (position + 1); if (stock < max_preload) { var img = new Image(); img.src = urls[load_position]; img.onload = function() {}; img.onerror = function() {}; load_images.push(img); preload(); } setTimeout(preload, 500); };
少々複雑になっていますが、これで画像を見ている裏でこっそりダウンロードされます。
パフォーマンス的にも良いかと思います。