• ベストアンサー

環境によって!?外部テキストを最初しか読み込めない

初めまして。今、大変困っておりまして。 何かわかればヒントだけでもお願いいたします FLASH MX Ver6.0 Windows2000の環境下で 外部テキストファイルに0~100の整数を変数に持たせています これを別ディレクトリに置いたswfで読み込ませ処理をしています。 外部ファイルの参照先は、swfを呼び出す際に「base=」のパラメータを渡して認識しています。 ただし、外部テキストは動的に変化するためswf側でenterframeにて常に読み込んでいるのですが。。 これを「c:\~」で始まるアドレスでブラウジングすると動的変化にあわせてムービーもリアルタイムに変化します しかし「http://~」でURL指定した場合、最初の表示は外部テキストの値を参照してくれるのですが、外部テキストの値が変化してもムービーはそのままで以後変化なし。 このような現象はよくあるのかネットで調べたのですが該当する情報は見つかりませんでした。 外部テキストへは読み込みしか行いません。 ただ、http://~というのはIISサーバーなのです。 ファイル権限など絡むのでしょうか。 実は2週間一人で調べていましたがらちがあかずじまいでした。 これからも解決策を調べていきますが もし、何かご存知でしたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

私もキャッシュが怪しいと思います。 ファイル権限の問題なら、最初の1回も読み込めないはずですからね。 キャッシュから読み込まれるのを防ぐ方法はいくつかありますが、簡単にできる対策としては、乱数を使って適当な数字を作り、ダミーの引数としてURLの後に ? で連結する、という方法があります。 刻々と変化する情報をCGIなどで読み込む際、キャッシュから読み込まれることを避けるために、よく利用される手法です。 例えば、  http://***/~.txt?dummy=50 と  http://***/~.txt?dummy=100 は違うURLと見なされますから、キャッシュからは読み込まれません。 スクリプトにしてみますと、大体、次のようになります。 (↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)  onClipEvent(enterFrame)  {   //キャッシュからの読み込み防止:   //乱数を連結して毎回違うURLを作る   file_url = "http://***/~.txt?dummy=" + Math.floor( Math.random() * 10000 );   //Shift-JISで読み込む   System.useCodepage = true;   this.loadVariables( file_url );  } 「ムービープレビュー」ではURLオープンエラーになります。 パブリッシュして HTML ファイルを作り、ブラウザで確認してみてください。 外部から読み込むテキストもキャッシュに残り、そのキャッシュから読み込んでしまうという現象は、実際にもあるようです。  ・SWF ファイルのキャッシュを防ぐ方法   http://www.macromedia.com/jp/support/flash/ts/documents/fl0155.html ↑これは swf ファイルの話ですが、最後の方に追記として、外部から読み込むテキストファイルがキャッシュされる件についても少しだけ記述があります。 肝心な部分のリンクが切れていますけれど(^^ゞ)、よろしければご参照ください。

momochi819
質問者

お礼

DPEさん!ありがとうございます。 ものの3分ほどで解決です。びっくりです。 SWFのキャッシュは知っていたのですが外部テキストファイルもキャッシュされてるなんて・・・。 乱数の式まで教えてくれて感謝です! 私ももっと精進せねば^^;

その他の回答 (1)

noname#35109
noname#35109
回答No.1

何もご存じではない者です。 ついでに,解決策も思いつきませんが,キャッシュを常に見に行っているのではないでしょうか。 読み込み中にWindowsの場合「F5」キーを押してみて,値が変わったら,キャッシュだと思います。 もしくはブラウザの設定をキャッシュを残さないようにするとか。 「F5」キーが通用するのって,直に見ているHTMLだけでしたっけ?? もしキャッシュだったとしても,設定は基本的にエンドユーサーの方なので,提供する側からは… でも,キャッシュをさせないとかいうJavaScriptか何かがあってような… でも,あってとしてもHTMLかJavaScriptですよね。テキストファイルには通用しないかも… と言うわけで,何でもないただの通りすがりのつぶやき人だと思ってください。失礼します。

momochi819
質問者

お礼

ありがとうございます。 「F5」試してみましたが駄目でした。 でもやっぱりキャッシュが原因だったようです! ヒントありがとうございました