SimpleBoxes

solipo 0.06

solipo ver 0.06 を公開しています。→ [solipo 紹介ページ]

solipo は、Windows 上で動作する polipo の GUI ラッパーアプリケーションです。

「solipo」をダウンロード

solipo 0.06 では、polipo.exe で uncachable が正しく動作していないバグを修正しています。

古いバージョンの solipo からは、 solipo.exe と polipo.exe / uncachable を差し替えることでバージョンアップできます。

polipo.exe を忘れずに差し替えるようにお願いします。

HTTP では「Cache-Control」ヘッダによってキャッシュ状態を制御できます。内容が動的に変化するようなアドレスにアクセスする際には、キャッシュしないようにした方がよいでしょう。

polipo でもヘッダ内容に応じて、キャッシュの状態を制御しています。しかしながら、polipo のマニュアルによると、多くの動的コンテンツが「キャッシュできる」ものとして送信されているようです (つまり、多くの場合「Cache-Control」ヘッダは送信されないということだと思います)。

そこで polipo では、クライアント側でキャッシュ状態を制御する仕組みが用意されています。具体的には uncachable というファイルでキャッシュしないアドレスを指定するというものです。

uncachable というファイル名は、設定ファイル config 側で指定します。solipo ではデフォルトで「uncachable」になっています。

ところが、ここでアドレスを指定しても、キャッシュディレクトリ内にキャッシュとして保存されます。

ソースを追ってみると、uncachable で指定したアドレスにマッチした場合には、内部でフラグが立てて、キャッシュの内容を参照しないようにはしているようですが、ディスクに保存しないようにはしていないようです。

これはおそらく意図した動作ではないでしょう。実際 polipo のメーリングリストでもバグとして認識されているようです。

polipo 1.0.4 の http.c 1036 〜 1038 行目に以下のようなコードがあります。

    if(urlIsUncachable(object->key, object->key_size)) {
        object->cache_control |= CACHE_NO_HIDDEN;
    }

http.c in polipo 1.0.4

これを以下のように修正します。

    if(urlIsUncachable(object->key, object->key_size)) {
        object->cache_control |= CACHE_NO_STORE;
    }

http.c [修正版] in polipo 1.0.4

これでおそらく意図した動作になるはずです。ただし、これは正しい修正かどうかは分かりません。あくまでも workaround です。ご了承ください。

また、solipo 0.06 では添付の uncachable を少し更新しました。

^http://www\.tumblr\.com/api/write/.+
^http://www\.lingr\.com/api/.+
^http://twitter\.com/statuses/.+
^http://www\.google\.com/reader/atom/.+
^http://.*\.megalodon\.jp/.+
^http://feeds\.feedburner\.jp/.+
^http://mail\.google\.com/.+
\.(dmg|zip|rar|lzh|lha|sitx?|gz|tar|bz2?|xpi|jar|exe|msi|tgz|z)$

uncachable in solipo 0.06

zip などのアーカイブファイルは、サイズが大きめで指定したキャッシュサイズを占有してしまう可能性が高いため、キャッシュしないようにしました。

動画や音声ファイルもサイズが大きいのですが、今回は含めていません。

これまでの関連記事
はてなブックマーク - solipo 0.06

スポンサーリンク

<< ワイヘケに行ってきました :: 母の日 >>