DeleGateのパラメタ EXPIRE を完全に誤解してた
... で,肝心の common.conf.txt の設定は
# DeleGate config. file -P8080 SERVER=http-sp CACHE=do EXPIRE=7d -P80 SERVER=http CACHE=do EXPIRE=100d ADMIN=nodakai@gmail.com # AUTH="admin::root:root"とりあえずこれで目的は達成された.
これは EXPIRE
が長過ぎる.(APT-HTTP でなく wget(1)
等の単純なクライアント((いや,wget(1)
だと -N
というオプションで,サーバの応答の Last-Modified
と,ダウンロード済みファイルのタイムスタンプを自分で比べてダウンロードを省く機能が一応あるんだけどね... 余り使われてないと思う. http://www.bookshelf.jp/texi/wget/wget-ja_5.html GNU Wget 1.9 Manual: タイムスタンプ))だと) http://ftp.jp.debian.org/debian/dists/testing/InRelease 等の超重要なファイルが数か月前の日付で 200 OK されるという惨事を招いていた.
EXPIRE
はこういう役目かな:
If-Modified-Since
のトラヒックすらもったいないとき,DeleGateが自分のキャッシュを探して見つかった日付がEXPIRE
以内ならサーバに問い合わせることなく 200 OK する- ただし
Cache-Control
とかが付いてれば尊重するようだ
- ただし
Last-Modified
とかを何も返さない超いい加減なサーバ (CGI?) の応答を,強制的にDeleGateにキャッシュさせる際の失効時間
私がDeleGateを使うのは「DebianのAPTやFedoraのYumのパッケージ取得を手元の(USB接続)HDDにキャッシュして,インストール遊びを何度も繰り返すときに作業効率を上げたい」ためだった.普段Linuxで使ってる実験用鯖に入れるのがLinux等だから,手持ちのまともに動く少ないPCのうち残りはWindows XPなLet'snoteで,だからcaching proxyはWindowsで動いてほしい.よってメジャー度とWindows版の扱いの楽さを勘案してDeleGateに落ち着いた.
この限定された用途だと EXPIRE=1d
位の,そこそこ短い閾値が良い.DeleGateが見つけた手元キャッシュが EXPIRE
より古かったとき, ftp.jp.debian.org
にはちゃんと If-Modified-Since
<キャッシュの日付> を送り, 304 NOT MODIFIED だったらクライアントには(ほぼ透過的に)200 OK で実ファイルが返る.
結局,(仕様でキャッシュされない http-sp の設定も消して)このように変えた:
# DeleGate config. file -P80 SERVER=http CACHE=do EXPIRE=1d ADMIN=nodakai@gmail.com # AUTH="admin::root:root"
超単純になった...
それにしても英単語またはローマ字の固有名詞の周囲に半角スペースを置くかどうかいつも悩む