polipo / dolipo

dolipo が速いらしいのでメモ。(ここを見た後、自分なりにまとめ)

(最初に見た dolipo を紹介するページがとても胡散臭かったのでスルーしていたのですが、)実は PolipoMac 用のフロントエンドだったのですね。

速い理由は以下のような感じ。

  • できるかぎり HTTP/1.1 のパイプラインの利用
    • 前回のリクエストのレスポンスが帰ってくる前に、次のリクエストを発行するので、速くなる
    • この機能だけならば Firefox にも実装されており、about:config で network.http.pipelining を true にすれば良い
  • ダウンロードが途中で中断された場合、そこまでの内容をキャッシュしておき、次回同じリクエストが来たら続きからダウンロードする
    • 無駄な再ダウンロードを省くので高速化する
  • Poor Man's Multiplexing を利用すれば反応が早くなる
    • HTTP/1.1 のパイプライン中で、1コネクションでサーバへ沢山のリクエストをする場合、前回のリクエストのレスポンスがとても大きなファイルだったりすると、次のリクエストのレスポンスを受け取るまでに長い時間がかかってしまうことになる
    • そこで、ファイルを細切れにダウンロードするようにリクエストをし、次のリクエストのレスポンスもすばやく帰ってくるようにする
  • (3/1追記) こちらの解説が分かりやすい

polipo なら macports 版も Windows 版もあるようですね。

ただ、Windows 版のインストーラ"S" キーが使えなくなる罠がありますし、ウチの環境だとなぜか libgnurx-0.dll (何それ?) が見つからないらしく起動すらできませんでしたので cygwin 版を使ってみることにします。

% wget http://www.pps.jussieu.fr/~jch/software/files/polipo/polipo-1.0.4.tar.gz
% tar xvzf polipo-1.0.4.tar.gz
% cd polipo-1.0.4
% make all; make install
% mkdir -p ~/.polipo/cache
% cat > ~/.polipo/config
dnsNameServer = "(略)"
diskCacheRoot = "~/.polipo/cache"
forbiddenFile = "~/.polipo/forbidden"
# Note that PMM is somewhat unreliable.
pmmFirstSize = 16384
pmmSize = 8192
^D
% cat > ~/.polipo/forbidden
^D
% /usr/local/bin/polipo -c ~/.polipo/config

Firefox のプロクシ設定を localhost の 8123 にして、と。さて、速くなったかな?

(3/1追記) 速くなった!という声が沢山聞こえてきますが、自分としてはさっぱり体感できないのでにんともかんとも。ネットワークやサーバレスポンスが速くなることより、Firefoxがタブを沢山開くと固まるとか、そういうところが直ってくれたほうが体感速度は上がるんじゃないかなー?

(8/20追記) 参考:インターネットを過激に加速するアプリdolipoの種明かし− @IT