Expiresでのキャッシュ防止について

[上に] [前に] [次に]
No.02 1999/06/25(金) 19:35:33
はじめまして。
キャッシュのことで質問があります。
常に最新のページが表示されるようにしたいので、
キャッシュされるのを防ぎたいのですが、
perlで以下のような出力をしても、キャッシュされてしまいます。
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n";
print "Content-Type:text/html\n\n";
print "<HTML>";
・・・
何かおかしいところがあれば、指摘してください。
因みにno-cacheはIEでは動作しないので使いたくありません。
よろしくお願いします。

s 1999/06/25(金) 23:34:11
print "Pragma: no-cache\n"; ← HTTP 1.0
print "Cache-Control: no-cache\n"; ← HTTP 1.1
だそうです。
私は念のため両方出力してますが、問題有るのかなぁ?

>因みにno-cacheはIEでは動作しないので
へー、これは知りませんでした。
3/4/5のバージョンでもそうなのでしょうか?

きむ 1999/06/28(月) 14:22:25
回答ありがとうございます。

>print "Cache-Control: no-cache\n"; ← HTTP 1.1
こんな方法もあるんですね。今度試してみます。

>>因みにno-cacheはIEでは動作しないので
>へー、これは知りませんでした。
少なくとも、私の試した環境(Win95/IE3.01、Win98/IE4.0or5.0)では
Pragma:no-cacheは無効でした。

本題に戻ります。
質問がまわりくどかったようですね。単刀直入にいうと、
「Expiresを使ってキャッシュを無効にするにはどう記述したらいいのか」
が知りたかったのですが・・・。

出来れば、IEでもNNでも機能するような記述でお願いします。

きむ 1999/06/28(月) 15:31:51
申し訳ありません。
別のところで使っているペンネームで質問してしまいました。
最初の「No.02」は「きむ」と同一です。
名前を偽ったとか言う意図はまったくありません。

hiro-kim 1999/06/28(月) 17:53:06
print "Cache-Control: no-cache\n"; ← HTTP 1.1

のことはまったく記載されていませんが,
『日経オープンシステム 1999年4月号』を繰ってみたら,IEで no-cacheが有効になったのは次の一例だけだったと書いてありました。

IE4.x と <meta http-equiv="Pragma" content="no-cache"> の組合せ
(HTTPヘッダの "Pragma: no-cache" はダメ)

で,IEはキャッシュには入ってしまうので,キャッシュ内の古いページを表示しないという対処を採るしかない。

<meta http-equiv="expires" content="Sun, 10 Jan 1990 01:01:01 GMT">
(記事中には HTTPヘッダの "Expires:" だとは書いてないです,念のため)

の過去日指定で対処すれば IEでも Netscapeでも効果がある,と書いてあります。

私自身は確認したわけではありません,参考までに。

s 1999/06/29(火) 22:41:52
本題とはそれてしまうのですが、

キャッシュしない=再表示しない
ならばキャッシュエリアには、データが残っている可能性あり。

キャッシュしない=キャッシュエリアに保存しない
ならばローカルにはデータが残らないという事になりますが、
この違いはかなり大きいです。

つまりローカル内にデータが残ると、セキュリティー関連の問題があります。
これは結構深い問題だなぁ。
自分で検証すればいいのですが、既に実験した方おられますでしょうか?

きむ 1999/07/01(木) 09:38:23
[[解決]]
hiro-kimさんのご指摘どおり、METAタグを使用したらうまくいきました。
METAタグでExpiresを指定するのと、HTTPヘッダにExpiresを
出力するのとでは挙動が違うのでしょうか・・・。
教えていただき、ありがとうございました。

ところで、
>ローカル内にデータが残ると、セキュリティー関連の問題があります。
ってありますけど、どのような問題が発生するのでしょう?
差し支えなければ教えてください。

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