Flashとキャッシュ

またFlashの話でごめんなさいね…。お仕事でFlash作るの久々なもんでね…。

というわけで、Flash開発の遅れといらだちを招く大きな原因の一つが、ブラウザのキャッシュ!。サーバスクリプトとやりとりするFlashなんかを作ると、ローカルファイルではテスト仕切れないので、どこかリモートのサーバに上げたり、ローカルホストにサーバ建ててそこ経由でテストしたりします。

その際に僕らをモギモギさせるのがブラウザーのキャッシュ!死んでしまえ!。キャッシュ!。一々消してらんねーっつーの!。と思った僕は、デバッグ用のHTMLではObjectタグをスクリプトから書き出すようにして、

test.swf?3209874←ランダムで生成した数字

とかやって、しかもこのswfから呼び出すxmlやらjpgやらにも全部(デバッグ中は)かけてるんですが、今日新たに僕をいらだたせたのは、swdファイル!。こ、い、つめーー…。デバッグプレイヤーによって勝手に呼ばれてくるから、こいつだけは上の方法が使えん!。キー!。「swfとswdが一致しません」とかなんとかほざきおる!。

怒った私は束の間考えた後に、しばらく使っていなかった Proxomitron 様をおもむろに引き出しから取り出し怒りを込めて激しく設定!

In = TRUE
Out = FALSE
Key = "Pragma: no-cache"
URL = "*.sw?"
Replace = "no-cache"

うむ…。こうしておいて Proxomitron を経由させたIEから直接swdを呼び出すと、Proxomitron から IE へのレスポンスヘッダにPragma: no-cache が必ずはいるようになった。が、手元にFlashMX2004がないので、これが本当に効果あるのかないのかわからん!。明日出社して試したい。

というかこれもし使えたら、swfにもcss使えばいいんですよね。ネットワークマナーを守り、開発用ブラウザ(と開発用サーバの間)のみに仕込みましょう!。でもそれだったら、そもそもその開発用ブラウザのキャッシュを0にすればいいのか…。うーん。よくわからなくなってきた。

追記1

上のじゃだめでした!!!!

追記2

In = TRUE
Out = FALSE
Key = "Cache-Control: no-cache"
URL = "*.sw?"
Replace = "no-cache, no-store"

も追加したら行けました。悪夢のGUIキャッシュ消し作業から解放!

追記3

後輩のミスターさんに、「IEのキャッシュの設定を変えればいいんじゃ…」と的確なアドバイスをもらい、動揺する。「ほ、ほら、それやっちゃうと、IEコンポーネントブラウザでも全部変わっちゃうっていうか、ほら…」ともごもごと反論した。Sleipnir等でプロキシ設定がんがん切り替えられる環境なら、Proxomitron 作戦もありだ!たぶん。どっちでもいい。