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 は超多数のプロトコルに対応しており,HTTPで発達したキャッシュ制御が通じないものも含まれるだろうから,こういうアドホックなものが要るのだろう

私がDeleGateを使うのは「DebianのAPTやFedoraYumのパッケージ取得を手元の(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"

超単純になった...
それにしても英単語またはローマ字の固有名詞の周囲に半角スペースを置くかどうかいつも悩む