キャッシュが瞬間的に無効になるという現象を阻止するには?

[上に] [前に] [次に]
seea [HomePage] 1999/07/23(金) 22:45:05
当方の環境は、MSIE 5.0 / Windows98 / キャッシュ用HD領域 64MB です。
キャッシュの設定は「新しいバージョンを確認しない」となっています。
----

前回にも増して複雑な質問で申し訳ないのですが、ご指導頂ければ幸いです。

タイトル通り、ブラウザの保持するキャッシュが無効になってしまうという
現象を確認しています。一定の条件が重なると発生するのですが、それを
何とか防ぐことができないものだろうか、というのが質問の趣旨です。

フォームを使って、ブラウザからCGIにパラメータを渡します。次のように:
(今回はCGIの利用を前提としています)

<FORM ACTION="jump.cgi" METHOD=get>
<INPUT TYPE=text NAME="p" SIZE=5 MAXLENGTH=5 VALUE="" ACCESSKEY="P">
<INPUT TYPE=submit VALUE="跳躍">
</FORM>

実際、このような FORM を利用しています。
そして jump.cgi は:

・パラメータ p から送られた値をもとに、ある一つのURLを求める。
・そこに Location: で飛ばす。(外のサーバですので、絶対URLになります)

このような処理を行います。

Location: で飛ばされた先は、何度飛んでも、キャッシュされないようなのです。
妙だとは思いませんか。URLから直接呼び出すとき:

<A HREF="jump.cgi?p=100">No.100</A>

そのときは、飛ばされた先は、二度目からは正しくキャッシュを読んでいるのです。

一連の実験の途中で、そのURLが更新されていないことは明らかです。

次の実験として、問題のURLの読み込みが完了した後、ブックマーク、一旦ブラウザを
終了させ回線も切り、再び立ち上げたブラウザでブックマークを開くと、見られました。
正しくキャッシュされていたのです。つまり、ページの有効期限から、ファイルが消えている
わけではないようなのです。このときブラウザの「オフラインモード」は使っていません。

フォームから呼び出したときは、無条件でキャッシュが消えてしまうのでしょうか。
いえ、実際には、キャッシュされることもありました。ときどき。謎。
この件について詳しい方は居られますでしょうか。宜しくお願い致します。

(経緯が長く判りづらいと思います。該当するページは HomePage からアクセスできます。
 意味のおかしいところや、疑問な点は、ご指摘ください)

Aurai 1999/07/25(日) 23:45:11
そんなにキャッシュが恋しいのなら
ローカルでプロキシでも立ち上げたらどうでしょう

さくらいゆずる 1999/07/26(月) 01:10:59
http://www1.mirai.ne.jp/~mikeneko/bd/log.cgi?room=334
で見たのですが、Location:ではキャッシュが無視される?らしいです・・・。

seea 1999/07/26(月) 06:49:35
リプライありがとうございます。

>Auraiさん
訪問者の利便性を念頭に置いています。
ローカルで立ち上げても、それを訪問者に提供するだけの
設備が無いのです。


>さくらいゆずるさん
なるほど、そういうこともあるのですね。
しかし今回は

<A HREF="jump.cgi?p=100">No.100</A>

で実験しているところに着目できます。
これは Location: で飛ばしており、様々なURLを試しまして
ほぼ、キャッシュを維持できることを確認しています。

そのため ”FORM で飛ばすことが「鍵」になっているのでは?”
と予想したのですが、他のページに飛ばすときに、これまた
キャッシュを維持できる場合があるのです。まちまちなのです。

その「差」を知りたくて質問させていただきました次第です。

ちはる 1999/07/28(水) 06:42:21
Netscapeで見た場合にどういう症状か試してみてはどうでしょう。
Netscapeで期待通りの動作ならば、IEが原因という事になりますよね。
(Netscapeをいつも使えば?という意味ではありませんけど)

余談ですが、IEはキャッシュ用のディレクトリ内部に隠しディレクトリを
4つ作ってあって、そこに交互に保存しながらキャッシュしているようです。
(どういう規則で4つを使い分けるのかは謎ですが)

seea 1999/07/29(木) 05:37:54
早速 Netscape 4.04 日本語版 でチェックしました。

こちらでは、正しくキャッシュが効くようです。
ということは・・ MSIE5.0 のバグ?

Location: の規則性が謎ですが、FORM を利用したとき MSIE のバグが
発動するのかもしれません。しばらく詳細に検証しようと思います。

seea 1999/07/29(木) 05:41:11
技術的に可能な範囲で JavaScript に置きかえるかもしれません。
JavaScript が有効なら MSIE5.0 のバグを回避できる、という形で。
(独自形式のデータベースファイルを利用しているので難しいかな・・)

[上に] [前に] [次に]