[AS2]FlashでSWFや画像などを外部から読み込む際にキャッシュさせない

FlashコンテンツでSWFや画像データを外部から読み込む際に、ブラウザでキャッシュさせない方法をメモ。頻繁に更新する必要のあるFlashコンテンツでは、更新した内容が反映されない可能性あるので、キャッシュ対策が必要。

具体的には、読み込みたいデータのパスに「?=現時刻」をプラスしてあげて、常に別のデータとして読み込ませる。例えば、CASA FrameworkのMediaLoadを使用して、test.jpgを外部から読み込む場合のキャッシュ対策はこんな感じ(ほぼCASAのサンプルそのままです)。

this.stop();
Stage.align = "TL"; 
Stage.scaleMode = "noScale";

import org.casaframework.load.media.MediaLoad;

this.createEmptyMovieClip("loadZone_mc", this.getNextHighestDepth());

function onImageLoadProgress(sender:MediaLoad, bytesLoaded:Number, bytesTotal:Number):Void {
    trace(bytesLoaded + "/" + bytesTotal + " bytes have been loaded into " + sender.getMovieClip());
}

var nowDate:Date = new Date();//現時刻を取得してnowDateに設定
var mediaLoad:MediaLoad = new MediaLoad(this.loadZone_mc, "test.jpg" + "?=" + nowDate);
this.mediaLoad.addEventObserver(this, MediaLoad.EVENT_LOAD_PROGRESS, "onImageLoadProgress");
this.mediaLoad.start();

現時刻の部分は、ユニークな値であれば問題ないと思うので、乱数など他の値でもでも問題ないと思われます。ちなみに画像データだけでなく、swfやxmlなどでも同じ方法でキャッシュ対策可能。

【参考にさせて頂いたサイト】

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax