新規記事投稿 フォロー記事投稿 記事のキャンセル
From: にあ <nir@mvg.biglobe.ne.jp>
Subject: Re: IE5.5の怪
Date: 2000/11/14 07:43:55
Reference: mesh.npc.2/00863

11月13日に、たくさんは書きました。

> IE5.5ではインターネットオプションの一時ファイルの設定で
> デフォルトで「自動的に確認する」が設定されますが、この状
> 態で下記の様な事象が発生しています。
>
> (1)アクセスカウンタ設置のページ(例:index1.htm)を表示さ
>   せ、そのページからリンク先(例:index2.htm)をクリック
>   してindex2.htmに移動します。
>  (2)index2.htmにindex1.htmに戻るリンク指定があり、それをクリ
>   ックすると必ずindex1.htmのカウンタはカウントアップします。
>   ブラウザの「戻る」ボタンではカウントアップされません。

ふーむ、なるほど。

> インターネットオプションの一時ファイルの設定で「確認しない」
> にすればリロードされずカウントアップされませんが、すべての
> ベージに適応されてしまうため問題があります。

これは、全く更新チェックをしないモードですからね。

> これはIE5.5のキャッシュ管理のバグと思われますが、リロードし
> た時のカウントアップ制限を行えばこの現象を回避できますか?

いや、これはどちらかと言うとnpc.cgiの方の問題ですね。(^^;;
IE5.5になって初めて発現したとすると、IE5.5のキャッシュ制御機構が
より正確になったためだと思われます。

IE5.5のキャッシュの制御オプションを見ると、
 (1) ページを表示するごとに確認する
 (2) Internet Explorer を起動するごとに確認する
 (3) 自動的に確認する
 (4) 確認しない
となっていますが、(1)、(2)の場合はそれぞれ〜ごとに必ず更新チェックしますが、
(3)の場合はキャッシュに残っているコンテンツに「最終変更日時」がセットされていて、
それがInternet Explorerの起動より後で、かつ、有効期限も切れていない場合には
更新チェックせず、その他の場合にチェックしているようです。
# これは自動チェックの基準としては良い選択だと思います。

ところが、npc.cgi は「最終変更日時」をセットしていないため、必ず更新チェック
されてしまうようです。

今までは、Content-Type が image/* の場合は最終変更日時が無くても、キャッシュに
残っている限りチェックしなかったのでしょう、おそらく。

以前(と言うか、最初の頃、つまり大昔。(^^;;)に調べた時には、画像データに最終変更日時
(Last-Modified レスポンスヘッダ)を付けても意味無しか、弊害のほうが多かったため、
つけるのを止めた覚えがあるのですが、この頃のブラウザはキチンと情報を渡してやった方が
より正しい動作をするようですね。

本来なら、各カウンタエントリごとに最終更新日時を残してやり、それとの比較でカウントアップを
制御すべきですが、残念ながら、現在の設定ファイル(カウンタファイル)は個別の更新日時を
残す様なフォーマットになっていないので、その変更をするためには、設定ファイルの中で
カウンタエントリ部分の書式変更が必要になり、後方互換性が確保出来ないので、チト面倒ですね。

# 試しにnpc.cgiに現在時刻をLast-Modifiedに返すだけの簡単なwrapperを被せてやったら
# 望みの動作をするようになったので、とりあえずは、その変更だけでお茶を濁すかな。(^^;;

中々出てこられなくてすみません。m(__)m > ALL
そろそろリハビリを開始しないと、このまま引退に追い込まれてしまうなぁ (^^;;;