Public Notes

  • node.jsで圧縮

    node.jsでサーバ書いているんですけど,圧縮しないと性能的に満たされてなくなってきたので,どうにかできないかと調べたら,なんとかなりました.まず,zlibがnpmを使わずともnode.js組込みで使えるようになっていたらしいです.で,そのドキュメントが
    - http://nodejs.org/api/zlib.html
    です.一通り使い方が書いてあるので,これに書いてある通りにやればだいたいうまくいきます.httpのクライアント・サーバ双方の使い方があるのはとても助かりました.
    で,一つ成功すると次もしたくなるのが人間の欲というもので,node.jsでけっこう有名なモジュールrequestでも圧縮したデータを扱いたくなります.
    - https://github.com/mikeal/request
    いくつか調べてみたところ,これそのものをforkする必要はなかったです.(した後に気が付きましたorz)やることは,
    - リクエストヘッダのAccept-Encodingに'gzip,deflate'をセットする.
    - encodingを指定しない.(Bufferをコールバックに渡すようにする)
    - 受け取った時にちゃんと展開する.
    の3つです.ちょっとめんどくさいですが,ネットワークのオーバーヘッドが減ると思うと,大したものではないかと思います.
    それから,child_process.forkの通信でも圧縮したデータを転送したい場合があるんですけど,Bufferではやり取りができないみたいなので,base64でエンコードしてやりとりしてみました.base64でいいのか微妙なんですけど,他のencodingを見る限りこれが無難かと思って,容量が増えるかもしれないけど,base64にしています.よくわからないです....
Copyright © Textt / GreenSpace