また失敗をやらかしたので、記録しておく。
トップページのRSSの読み込みやらをいろいろ改造して、If-Modified-Since
を正しく出して処理するようにした。今までもコード自体は書いてあったが、今までうまくいってなかった。というのも、curlのライブラリの問題だと思うが、httpsでのHTTPのリザルトコードが見えなかったのだ。この「httpならよくてhttpsはダメ」という条件が今回の変更以前にはわからず、成功する場合と失敗する場合がどうもよくわからなくて、If-Modified-Since
を使っていなかった。思うに、ちょっと凶悪だったかもしれない。
でも、今回書く失敗というのはこの話ではない。304(Not Modified)を受けた後の処理である。
キャッシュファイルの更新時刻で取りにいくかいかないか判別しているのだが、304(Not Modified)を返してくれた場合はキャッシュファイルを読みにいく、という処理しか書いていなかった。本来はtouch()
でキャッシュファイルの更新時刻を更新しなければならない。つまり何が起きていたかというと、304を返されたRSSやページには毎回アクセスしに行っていたのである。なんだよ、キャッシュになってないじゃん。
キャッシュファイルを処理しているだけにしては遅いことと、アクセスLEDの挙動を見ていて、今日になってはじめておかしいことに気づいた。けっこう迷惑だったろう。