Perlでチャット(15) 何をどうしたって問題は出る

最初に無駄な負荷が高すぎるスクリプトを設置したせいで、隔離サーバに入れられてしまった。
負荷を減らすためにPerlコンパイル常駐させるSpeedyCGIというのを試したらめちゃくちゃ処理早くなった。初めからこれ試せばよかった。
で、ここでまた問題点が。入室後はいいんだけど、退室後や閲覧時に会話ログがなかなか更新されないという問題が。(更新やページを開きなおしたとしても同様)俺の環境ではIEでこの現象が起きた。
入室時は絶対そんなことないのになんでだろう、ってことでいろいろ試してみたら、要は「前回読み込んだときと内容が変わっていないであろう」出力を、毎回処理せずに前回読み込んだものをそのまま表示するというような仕様になっているようだ。(ブラウザ側ではなくサーバ側が)要はまあブラウザのキャッシュと同じなんだけど、このままだと退室したら退室前の会話ログが表示されるという状態になってしまう。これでは困る。
で、いろいろ試行錯誤していたんだけど、結局、入室時はなんでログが更新されるのかと言うと、更新あるいは発言毎にフォームデータを送信しているため、サーバ側が「フォームデータの受信により内容が変わる可能性がある」と判断しているためらしい。つまり、閲覧時はフォームデータのやりとりを行わないので、前回のキャッシュを出力してしまうのだ。というわけでもう今回も荒技としか思えないが、ページを開くたびに無意味なフォームデータを送信し、サーバ側には「会話ログ表示スクリプトはフォームデータの内容によって出力内容を変えている」と思わせる処理を書き加えた。要するにフォームデータにより無意味な分岐を行わせたわけだ。実際には分岐しても全く内容は同じなんだけど、サーバ側に変わると思わせられればそれでいい。
これを実装したら、とりあえず問題は解決した。


↑フォームデータ送信だけでいいっぽい?
ていうか500エラー出た
SpeedyCGI解除したら直った
もうなんなの