ファイル容量が大きい時は圧縮
タイトルは当たり前なことを言っているだけだが、ウェブでも適用できるっていうメモ。
最近はJavaScriptでアプリケーションを作ることが多いのだけれど、データ処理をサーバサイドでせずクライアントサイドで実行させたほうがいい場合もあるよね、と思っている。重い処理をサーバで実行すると仮定して、リクエストが増加するとすぐにサーバの応答速度が劣化しそうだ。例えば、利用者が増えた場合もそうだし、ちょっとした操作でサーバと通信してその都度サーバ側で処理をさせる場合などがある。
これを一切やめて初回アクセス時に、データを全てダウンロードさせJavaScriptでまかなっちゃうほうがサーバへの負荷が少ないなぁ、と思い始めた。しかしその際、一旦データを全てダウンロードさせるわけだから、当然データ量が大きくなってしまう。つまり初回アクセス時の応答速度に難が生じるわけだ。
で、やってみたこと。データはJavaScriptのJSON形式でサーバからブラウザに送出するわけだが、このときJSONデータ(ファイル)をzip圧縮して渡してしまう。JSONデータは単なるテキストデータだから、うまくすれば転送するデータ量が10分の1くらになる。ただし単にzip圧縮して、それをコールしてもブラウザはそのデータを解釈することができないからエラーになっちゃう。そこで.htaccessで一工夫。
AddEncoding x-gzip jgz
zip圧縮したデータ(ファイル)は、とりあえず拡張子jgzとつけておいて、エンコーディング指定をしてやる。たったこれだけで、ブラウザは自分で適切に解凍し、解凍したデータをJSONとして扱ってくれる。すごく便利。
おそらく他にも適用できるんじゃないかと思う。cssとか画像とか。また暇があったら試して見ることにする。