時間がとれたので、再び勉強。やっぱり業務で扱わないとだめだめ。
ライフサイクルを学ぶ。教えてもらったmuimiさんの解説サイト。分かりやすい。
それと戻るボタンが押された後にHttpSessionからUIコンポーネントを 取得できず、submitしてもUIコンポーネントを復元するだけで終わってしまう。
RestoreViewフェーズで終わってしまうため。 ページをキャッシュしないようにし、戻るボタンが押されたら再び 強制的にリクエストさせ、UIコンポーネントを格納するようにしてみた。
これでいいのかなあ。ライフサイクル(というかJSF)は、まだまだなので引き続きお勉強。 試しているのはMyFaces。
JSFのキャッシュさせない実装をしていたけど、IE 6ではうまくいくけどFirefox 1.5 ではキャッシュしてしまうという問題にぶちあたる。
Cache-Controlにno-cacheだけ指定していたことがだめだったっぽい。
no-cache, no-store
no-storeを指定で、Firefoxもおっけー。キャッシュを参照しなくなりました。
@IT会議室より引用
Cache-Controlは
・単純にキャッシュさせたくないなら「Cache-Control: no-cache」
・保存もさせたくないなら「Cache-Control: no-cache, no-store」
・念のために(他のヘッダにも注意を払いながら)なら 「Cache-Control: no-cache, no-store, must-revalidate」 って感じみたいですね。
「Cache-Control: post-check=0, pre-check=0」は、さすが「IE拡張」だけあって、 RFCじゃ全然見つかりません
FirefoxのCacheを削除し、no-cacheを指定しただけの場合に Cacheディレクトリ*1 *2を確認したところ、ファイルを更新していたよぉ。 まずキャッシュファイルが更新しているのか確認すべきだったなあ。