AjaxUploadの諸問題と画像プレビュー その1

2010.12.15 Author: ぴ

最近、Googleにサイトプレビュー機能がついたことはご存じと思います。
検索を行うと、リンクの右側に虫眼鏡マークがついていまして、クリックをするとそのサイトのプレビューが見えるというものです。

この画像表示が異様に速いのにお気づきでしょうか。実は、これはdataスキームを使って処理がなされています。dataスキームを使って処理をすることで、

  • 1回のHTTPリクエストで処理が済む
という大きな利点が生まれます。この1回のリクエストでというのが、Webシステムでの初回読み込み時の体感速度向上につながります。

実現方法も非常に簡単です。

<img src="data:MIME_TYPE;base64,データ">
のように書くだけです。非常に簡単です。

ちなみに、phpで処理する場合は非常に簡単で、

printf(
    <img src="data:%s;base64,%s">',
    base64_encode(file_get_contents(ファイル))
);
とでもしてやれば、簡単に実現できます。

使用用途として、ファイルサイズが小さいもの(アイコン等)に適しています。 通常、画像ファイルは一度ブラウザが読み込んでしまえば、キャッシュが効くのでページ表示の体感速度は向上します。
ただ、このdataスキームを使っている場合は、毎回base64エンコードしたものをhtmlで送り込んでいるので 、無駄と言えば無駄ですね。
回避する方法としては、

  • CSSの背景画像にデータスキームを使ってあげる
  • mod_deflateでgzip圧縮してあげる
などいくつか考えられます。圧縮は結構効果が大きいです。

では、次回はこれを応用して何かしてみます。

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ