XMLHttpRequestでキャッシュが効いてページを更新しても反映されなくなると言うのは良く聞くトラブルだ。
そんな感じの症状が出たので調整する事にした。

この辺を読むと相当グダグダな感じだが今回調べた最近のブラウザではまともになっていた。
http://www.semblog.org/msano/archives/000386.html

Firefox3.5 および IE7 の結果を整理すると

1. Expiers 又は max-age が指定されているページはリクエストしない。
2. 1.の状態だと F5(CTRL+F5も) でリロードしてもリクエストしない。
3. XMLHttpRequest に Cache-Control:no-cache ヘッダを指定すればリクエストする。

となった。

1. は期限切れとなればちゃんとリクエストするので通常のファイルと変わらない。
2. が通常のファイルと動作が異る。通常のファイルは Expiers を無視してリクエストし304になる。
これが混乱の元だと思われる。
なんせ、一旦キャッシュが効いてしまうと手動で回避する手段が無い(設定からキャッシュクリアと言うのは有る)

対策としては
1. サーバ側で Expiers をページ毎にきちっと制御する。
2. クライアント側で Cache-Control:no-cache を設定して毎回フルリロードする。
となる。できれば 1. の方が 304 が返せるので無駄が無い。
ユーザ操作でリロードとかしたい場合はクライアント側アプリで作り込むしかなさそ。

捕捉:
FirefoxはFireBugが入っていると js/css は無条件にリクエストに行ったりして挙動が違う。
こいつにだいぶ撹乱されたので動作確認する時はご注意。