ActionScriptから外部のリソースをロードするには、
1 2 3 4 | var uloader:URLLoader = new URLLoader(); uloader.addEventListener(Event.COMPLETE, completeHandler); var ureq:URLRequest = new URLRequest("http://www.hogehoge.com/resource.txt"); uloader.load(ureq); |
普通こんな感じですね。
それで、
1 2 3 | private function completeHandler(e:Event):void{ var resource_txt:String = e.target.data; } |
こんな感じで受け取ります。
ただしコレだとロードしたデータがキャッシュされてしまいます。
開発の途中でキャッシュのせいで予想した結果が返ってこなくて、
無駄な時間をすごしたことも数知れず。
キャッシュしないようにするためには、
1 2 3 4 5 6 | var uloader:URLLoader = new URLLoader(); uloader.addEventListener(Event.COMPLETE, completeHandler); var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache"); var ureq:URLRequest = new URLRequest("http://www.hogehoge.com/resource.txt"); ureq.requestHeaders.push(header); uloader.load(ureq); |
こんな感じになります。
URLRequestHeaderでpragma:no-cacheというものを渡してあげます。
すると、ブラウザがキャッシュをしなくなります。
ただしIEの場合、
どうも一度アプリケーションを終了するまではno-cache指定していてもキャッシュしてしまう様子です。
[HOWTO] Internet Explorer でキャッシュを無効にする
ここによると、
Pragma: no-cache は、セキュリティで保護された接続で使用された場合にのみ、キャッシュを実行しません。Pragma: no-cache META タグが、セキュリティで保護されていないページで使用された場合、Expires: -1 とまったく同じ働きをします。そのページはキャッシュされますが、直ちに期限が切れるものとしてマークされます。
だそうです。
つまり、no-cacheでもキャッシュされます。なのでリロードしてもキャッシュから読まれてしまいます。
一度アプリケーションを終了すればキャッシュが消えます。
開発時にIEを使っていて、外部のテキストとかを読み込む場合には要注意ですね。
IE使いづらい!