さかにゃ日記 Information(臨時連絡):
現在臨時連絡はありません。 まぁ暇なときでかまわないので、 一度くらいは通常のInformationをご覧ください。
この日記中のamazon.co.jpへのリンクはアソシエイト・プログラムが適用されています。
最近さかにゃ日記経由でAmazonで発注していただいた商品リスト
原因判明。
_
まず1点。 lib/detect.pm の457line付近でdiからExpireを所得してるわけだけど、 ここのマッチングが
}elsif(/^Expire.?:\s*(.*)\012/i){ $expires = $Times->timeconv($1, $remlag);になってる。これじゃ Expires: はとってこれても、 Expire: は取ってこれない。 /^Expire?:\s*(.*)\012/ でマッチングすればいいのかな。
_
で、それはそれとしてそもそもdiの場合Expire情報を見てない(笑) diの場合はExpire以外にLast-Modified-Detectedなる情報があって、 そちらを利用してる模様。detect.pm の465lineに
# $lmd = $expires - $expiresCount;てなコードが残ってるあたり、過去には採用されていた模様。
で問題はこのLast-Modifed-Detected. LIRSの仕様と照らし合わせて考えるに、ここには最後に自力で更新時刻を所得した時刻が入らなければならないわけだけど、 セキュリティアンテナが吐いてるhina.diの場合は、そうなっていない。 HEADなりGETなりで自力所得していても、 対象サイトが更新されてなければLMDは更新かけない模様。
_
ちなみに日記鯖のhina.diはちゃんと最終自力所得時刻が入ってるんで、 diの仕様としてはそーゆーことなのかなと思ったり。 ただし日記鯖のhina.diのヘッダは HINA/2.1 なのに対し セキュリティアンテナのhina.diのヘッダは HINA/2.0 なので、 この辺で仕様変更があった可能性あり。 WDBの仕様は未チェック
_
で、対応せねばなるまい。 一番単純なのはLast-Modified-Detectedを無視して Expire情報を見ることか。 detect.pm の457lineを
# }elsif(/^Expire.?:\s*(.*)\012/i){ }elsif(/^Expire?:\s*(.*)\012/i){に変更かけて、465line
# $lmd = $expires - $expiresCount;のコメントアウトをはずせばいいかな。 ただ、$expiresCount なる変数が定義されてるかどうかが怪しいんで、 28800決めうちでもよさげ。 所詮暫定対応だし。 とりあえずこの変更かけて様子をみてみるとしよう。
_
バッチリだ!
|
|