WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:データの更新結果が反映されない

にゃんた [WriteDate : Mon May 14 13:27:57 2001]

はじめまして、よろしくおねがいします。

データファイルの内容をもとにHTMLを生成する
CGIがあるんですが、これをトップフレームの
メニューから呼んでミドルのフレームへ表示してい
ます。

このデータファイルを書き換えるCGIが別にあり
こちらを実行後また、トップのメニューよりCGI
を呼び出しミドルに表示すると、書き換え前のデータ
のHTMLが表示されてしまいます。
「更新」ボタンを押せば書き換え内容でのHTMLが
表示されるんですが、ネットスケープではうまくいく
のですがIEだと更新前のデータのものがどうしても
表示されてしまいます。

更新内容が必ず反映されるようにするにはどうしたら
いいのでしょう?

どなたかお助けくださ〜い (><)


ちゃいぱ [WriteDate : Mon May 14 18:02:49 2001]

>「更新」ボタンを押せば書き換え内容でのHTMLが
>表示されるんですが、ネットスケープではうまくいく
>のですがIEだと更新前のデータのものがどうしても
>表示されてしまいます。

シフトキーを押しながら、「更新」ボタンをクリックでダメですか?


にゃんた [WriteDate : Mon May 14 18:14:13 2001]

ちゃいぱ様ご回答ありがとうございますm(__)m

すみません書き方変でした(TT)
ネットスケープでは「更新」を手動で
やらなくてもOKということです。

「更新」をおせばIEでもちゃんと更新
結果が表示されます。(><)

これを、「更新」ボタンを使わずに更新
内容が必ず反映されるようにしたいので
すが・・・

HTMLが表示の際に一度「更新」ボタン
と同様の再読み込みをさせる等(可能か分
からないです)で回避できないでしょうか

すみません、おねがいしますう(><)


TNN [WriteDate : Mon May 14 18:45:05 2001]

Internet Explorerのキャッシュ問題ですね。
ただ、何を解決すればよろしいのか、良くわからないのですが。

●Internet Explorerの設定の話ですか。
閲覧者として、解決したいならば。

多分、[ツール]-[インターネットオプション]から、
「全般」-「インターネット一時ファイル」の「設定」で、
「保存しているページの新しいヴァージョンの確認」を
チェックすればよろしいかと。


●HTML・CGIの話ですか。
制作者として、本質的に問題を解決したいのなら。

HTTPのヘッダに、no-cacheを出力させて下さい。

HTTP/1.0では
Pragma: no-cache
HTTP/1.1では
Cache-control: no-cache

このHTTPヘッダが附いて送られてくるHTML文書を、
ブラウザはキャッシュしません(仕様では)。
更新された内容を毎回読んでくれます(くれる筈です)。

或は、以下のタグをHTMLに記述して下さい。

HTTP 1.0
<meta content="no-cache" http-equiv="Pragma">
HTTP 1.1
<meta content="no-cache" http-equiv="Cache-Control">

参考。

http://www.bekkoame.ne.jp/~y-tomi/webtech/cachecontrol.html
http://homepage1.nifty.com/bakera/html/opinion/perl.html
http://apacheml.ecc.u-tokyo.ac.jp/ml/msg02115.html
http://www.java-conf.gr.jp/archives/servlet-ml/msg01313.html
http://www.java-conf.gr.jp/archives/servlet-ml/msg01314.html
http://www.microsoft.com/japan/support/kb/articles/J051/4/31.htm


TNN [WriteDate : Mon May 14 18:48:58 2001]

>ただ、何を解決すればよろしいのか、良くわからないのですが。

「いかなる立場から問題を解決したいのか」ですね。

「自分のサイトの表示を、自分だけちゃんとした状態で見たい」
では困りますので、制作者の立場と、閲覧者の立場とは区別しなければ
いけません。


にゃんた [WriteDate : Mon May 14 19:09:15 2001]

TNN様
ご回答ありがとうございます(^^;
さっそく試してみます。

>ただ、何を解決すればよろしいのか、良くわからないのですが。

なるほど・・・確かにそうですね(><
>制作者として、本質的に問題を解決したいのなら。
こちらだったのですがどうも、回答して
頂く方に伝わらないような書き方をして
しまっていたようです。

今後は、気をつけたいと思いますので
今回に懲りずに、また宜しくお願いい
たします。私もいつか回答を出来るよう
に頑張りますので、今後も宜しく
お願いいたします。

ご指導いただきありがとうございます。

     m(__)m にゃんた


にゃんた [WriteDate : Mon May 14 19:25:02 2001]

TNN様
ご回答ありがとうございます(^^;
さっそく試してみます。

>ただ、何を解決すればよろしいのか、良くわからないのですが。

なるほど・・・確かにそうですね(><
>制作者として、本質的に問題を解決したいのなら。
こちらだったのですがどうも、回答して
頂く方に伝わらないような書き方をして
しまっていたようです。

今後は、気をつけたいと思いますので
今回に懲りずに、また宜しくお願いい
たします。私もいつか回答を出来るよう
に頑張りますので、今後も宜しく
お願いいたします。

ご指導いただきありがとうございます。

     m(__)m にゃんた


バギンズ [MAIL] [URL] [WriteDate : Tue May 15 12:30:55 2001]

キャッシュ回避といえば、以前話し合って、この掲示板もキャッシュ回避してますよね。
アドレスの後ろの「?01-05-14-19-25」←最終書き込み日時。

ミドルのフレーム表示する時にこの方法ができるかどうかが鍵です。


にゃんた [WriteDate : Tue May 15 15:14:23 2001]

おせわになっています。
にゃんたですm(__)m

TNN様
早速CGIで生成されるHTMLのMETAタグを下記のように
変更するようにして試してみたのですが・・・

<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
</HEAD>

なぜか、データ更新後上部メニュー(FLASHにて作成)
をクリックした1回目は前回と同じ物が表示され続けてまた
上部メニューをクリックするとしっかり更新されたデータが
表示されます。

また、更新後の1回目の上部メニュークリック(以前の
データが表示されています)に続けてまた変更を行い再度
メニューからCGIを呼び出すと2回分の更新されたデータ
が表示されます。
以降はこれの繰り返しで交互に更新されたり更新されなかっ
たりが繰り返されます(TT)

・・・これっていったい <(><)>
・・・あたま、いったい <(@@)>
すみません、ちょっと壊れてます。

いったいなぜこんな現象になるのでしょう?
回避する方法はないでしょうか。
HTTP 1.1
<meta content="no-cache" http-equiv="Cache-Control">
の方をも試してみるつもりですが、CGIの登録に
審査があるので結果がでるのに時間がかかるのでした(TT)

またご報告します。
上記現象の原因と回避方法にお心当たりの方は
お教えいただけますと幸いです。m(__)m

宜しくお願いいたしますぅ。


にゃんた [WriteDate : Tue May 15 15:26:59 2001]

バギング様 ご回答いただきありがとうございます。

実は、上部のメニュー部分(FLASH)からCGIを
呼び出しデータファイルを元に直接フレームへHTML
を表示していますのでメニューの再編が必要なHTML
の名称を変更することでのキャッシュの回避は、今回は
難しいのではないかと・・・よくわかってはいないので
すが・・・

上記のような状態ですが、この掲示板の方法を取り入れ
る方法もあるのでしょうか、どう取り入れていいか知恵
のたりないにゃんたでした・・・勉強不足ですみません。

ご回答いただきありがとうございます。


しなのむし [WriteDate : Tue May 15 16:08:34 2001]

以下、参考まで。
http://www.parkcity.ne.jp/~chaichan/qanda/qa573.htm
内容の正確さについては自信なし。

>実は、上部のメニュー部分(FLASH)からCGIを
>呼び出しデータファイルを元に直接フレームへHTML
>を表示していますのでメニューの再編が必要なHTML
>の名称を変更することでのキャッシュの回避は、今回は
>難しいのではないか

?xxx を生成するCGIプログラムを間に挟めば実現できるかも。
Flashのアクションスクリプトでは出来たかな・・・?
ひよこさん辺りが詳しそう。

ちなみに、Flashは4ですか5ですか?


にゃんた [WriteDate : Tue May 15 18:35:45 2001]

うぅ、にゃんたです。
上の記事でバギンズ様をバギング様と
書いてしまいました(TT)バギンズ様すみません。

FLASHは5です。
結局METAタグで対応するのは難しいのでしょうか

しかし、どうもFLASHを使用しているための
動作不良ではないようです、FLASHをしようせずに
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
を含んだ更新されたHTMLを、別フレームのリンクで
ミドルへ読み込んだ場合(CGI未使用)更新内容が
なぜか交互に正確に反映されたり反映されなかったり
繰り返します。

フレーム使用のための弊害でしょうか・・・


ひよこ [MAIL] [URL] [WriteDate : Tue May 15 22:32:50 2001]

なんか呼ばれたような?(笑)
> ?xxx を生成するCGIプログラムを間に挟めば実現できるかも。
> Flashのアクションスクリプトでは出来たかな・・・?
たぶんFLASHではなさそうな・・サーバーキャッシュか?
良くわかりませんが、やはり、?xxx の形だったらいけるのではないかな?
って考えたら、CGIの中継が挟まるならCGIはFile名を返すわけじゃないですね。
何となく、ブラウザの挙動っぽい気もしますが、他の環境に変えてみても同じなんでしょうか?

全然答えになってないですが・・(汗)


Nobu3 [URL] [WriteDate : Wed May 16 00:16:48 2001]

最終的にリダイレクトするCGIにするとかはダメ?

あくまで経験上(自作掲示板とかの挙動)の話ですが。
同じURIでも、なにかメッセージを出したあと「普通のリンク」で戻るとキャッシュの事が多いですが、メッセージを出さずに「Location」で転送(?)してやると必ず更新されてますので。


にゃんた [WriteDate : Wed May 16 08:44:09 2001]

ども、にゃんたです。

ひよこさん、Nobu3さんご回答ありがとうございます。

実は上の記事でも書いたのですが
少々・・・いやかなり強引な方法なのですが
CGIが2回目にコールされた時は正常に更新
されることを利用してFLASHのメニュー
ボタンを押された際にCGIを2回コールす
るようにすることでどうにか確実に更新され
た結果を表示することが出来るようになりま
した・・・

・・・でもかなり強引ですよね(^^;
Nobu3さんの方法等を参考にもう少し正攻法で
解決できないか試してみるつもりです。

取りあえずどうにか動くようになったので
少しほっとしている にゃんた です。


しなのむし [WriteDate : Wed May 16 12:47:15 2001]

え〜説明不足だったようで・・・

Nobu3のは基本的には自分のと一緒ですね。
Location:で飛ばすだけで更新されるのだったら
?xxx を生成する必要もないんですね・・・

で、Flash案ですが
GET URLする都度、Flash内部で、?xxx
を生成出来ないかという意味だったのですが
(xxxはランダムな数字等)
Flash4で試したところ
random関数を使って生成した値を変数に入れて
GETで渡すことが簡単に出来ました。実際は

URL?変数名=ランダムな数字

みたいになります。
Flash5でもたぶん出来るでしょう。


しなのむし [WriteDate : Wed May 16 13:33:23 2001]

>Nobu3
Nobu3さん

「さん」付けた気になってたけど「3」だった。
ノブサンサン


にゃんた [WriteDate : Wed May 16 17:09:35 2001]

お世話になってます にゃんた です。

しなのむしさん
理解力不足のせいでお手数をおかけします(^^;
えと、FLASHから呼び出すCGIの後に
?変数 ってやるってことでしょうか?

うぅ、実は各メニューから飛ぶとき同一CGIに
対して読み込むデータを判別させるためにデータ
判別用のコードを与えています。

つまりボタンが下記のように並んでいて

[1] [2] [3] [4]

[1]をくりっくされるとtest.cgi?1
[2]をくりっくされるとtest.cgi?2

みたいにしてCGIを呼んでいるのですが、
この後にtest.cgi?1<変数>というようにして
内部で受け取ったデータをうまく扱えばOK
でしょうか(^^;

むぅ・・・(@@)
そっか、確かにそれぞれのボタンクリックしたとき
ちゃんと別のページ表示されますからね〜

なるほどです(^^)
なんか大いに納得しました
このスレッド長くなってしまいましたので
この辺でいったん終了します。
もし、今回の方法でうまくいかない場合は
また、ご質問させていただきますので
なにとぞよろしくお願いします。

ご回答頂きました
ちゃいぱ様 TNN様 バギンズ様 しなのむし様
ひよこ様 Nobu3様 皆さん本当にありがとうござ
いました。

また、ご厄介になるとは思います〜
よろしくお願いしますm(__)m

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World