かってきままな日々
2020-11-06 (Fr) [長年日記]
_ squid 調整
localnet として、うちのネットワークの IPv6 アドレスを追加。 ただ、IPv6 アドレスはころころ変わるので、かなり広めに。 少し気にはなったけど、どうせファイアウォールで外からは入れないので、 まぁいいことにする。
あとは、キャッシュの時間。
refresh_pattern ^ftp: 1440 20% 10080
こういうので設定されてるようで、
/^ftp:/
だったら- 最小キャッシュ時間 1440分
- 鮮度しきい値 20%
- 最大キャッシュ時間 10080分
なのだそうで。
キャッシュに持ってから 1440分未満は、そのキャッシュを返す。 キャッシュに持ってから 10080分以上経っていたら、サーバから取得して返す。
その間だったら鮮度を見る。鮮度とは、
(そのファイルがキャッシュに入ってからの時間) / (そのファイルがサーバに作成されてからの時間)
なのだそうで。つまり、キャッシュに入った時には 0% で、だんだん 100% になっていく。 100% になっていくスピードは、サーバに作成されてからキャッシュに入るまでの時間による。 サーバ上で作成 → キャッシュに入る → 今 で、それぞれ同じ時間の時に 50% か。
これが 20% 未満だったらキャッシュを返し、それ以上だったらサーバから取得して返す のだそう。
えーっと、20% ってどういう意味だ…?
(now - cache_create) / (now - server_create) = 0.2
つまり
(now - cache_create) = (now - server_create) / 5
サーバ上の age の 1/5 で expire、か?
もう少し変形してみようか。
now - cache_create = now / 5 - server_create / 5
now - now / 5 - cache_create + cache_create / 5 = cache_create / 5 - server_create / 5
now * 4 / 5 - cache_create * 4 / 5 = cache_create / 5 - server_create / 5
(now - cache_create) * 4 / 5 = (cache_create - server_create) / 5
(now - cache_create) * 4 = (cache_create - server_create)
(now - cache_create) = (cache_create - server_create) / 4
キャッシュ作成時におけるサーバファイルの age の 1/4 が経過したら expire、かな。
ただし、「最小キャッシュ時間」「最大キャッシュ時間」の方が優先度が高いのと、 HTTP ヘッダでの expire 設定もちゃんと効く。
…複雑すぎん?
そりゃ、頻繁に更新されるページはいつまでも持ってるわけにいかないけど、 長いこと放置されてるページは少々長く持ってても大丈夫、という考えで、 そういう設定ができる、ってのは解るけど。
結局私は↓こんな設定にした。
refresh_pattern \.pkg\.tar\.zst$ 0 100% 4320
refresh_pattern . 0 0% 0
単に archlinux のパッケージをしばらくキャッシュしたかっただけなので。