ActionScriptメモ:キャッシュ

謎猫
先日FLASH用にランキングを作ったわけだかー
ちょっと壁にぶつかった場所があるのでメモですー

フィロ
まずは問題のあったコードを見てみたいと思います。


//PHPから値を取得
getRank_lv = new LoadVars();
getRank_lv.onLoad = function(success) {
	if (success) {
		//PHPから出力された値xxxを変数aに格納
		a = this["xxx"];
	}
};
//アクセスするPHPを指定
getRank_lv.load("xxx.php");

フィロ
…これのどこがいけないんですか?

謎猫
このままではPHPからの値が正常に取得できない場合があるのだよー

フィロ
…ちゃんと使えるときもあるって事ですね。

謎猫
まーヒントを言うと最初にアクセスした時の値しか取得できない事があるって事ー

フィロ
え!そんなことが起きるんですか?
それではランキングみたいなアクセス毎に値が変わる可能性のあるものでは困りますね。

謎猫
そーここで俺は躓いて何回も書き直しをしたんだよー

フィロ
それで原因は何なのですか?

謎猫
原因はブラウザの方だったんだなー
これがー

フィロ
ブラウザの機能の問題ということですか…?
それで改善ってできるんですか?

謎猫
ブラウザにはキャッシュという機能がある事をフィロくんはご存知かねー?

フィロ
えっと…確か一度訪れたホームページへの再アクセスの速度を早くする為にデータをメモリに保存するものですよね…?

フィロ
あ!もしかして2回目のアクセスからはキャッシュを参照してる為にランキングが反映されなかったのではないでしょうか!

謎猫
ご名答だよ白熊さんー
キャッシュのせいでPHPにアクセスできないという事もあるようなのだよー
それでは改善する為のコードを見てみようー

//PHPから値を取得
getRank_lv = new LoadVars();
getRank_lv.onLoad = function(success) {
	if (success) {
		//PHPから出力された値xxxを変数aに格納
		a = this["xxx"];
	}
};
//アクセスするPHPを指定
getRank_lv.load("xxx.php?"+getTimer());

フィロ
最後の行のPHPのURLに時間を追加したみたいですが…これで改善できるんですか…?

謎猫
うむーキャッシュはURLで指定されるので改善するには毎回URLを変える必要があるということなのだよー
つまりURLにキャッシュ防止のパラメータを付与すればOKということなのであるー!!

フィロ
…なんか力技じゃないですか…?

謎猫
まー気にするなー


もっとスマートな方法はあるかもしれないけど今回はこれで改善。
ページ自体にキャッシュ禁止できればそれで改善できるかもしれないが試してないっす。

学習記事をこちらに移行して初の記事なのでちょっと気合入れて書いてみました。
うむぅ…時間かかるなぁ…文章も説明も下手だなぁ…。
まぁこんな感じで続けて行きたいと思います。


コメント
管理者の承認待ちコメントです。
  • -
  • 2014/04/30 4:28 PM
コメントする








    
この記事のトラックバックURL
トラックバック