- PR -

AJAXでの通信時にプロキシサーバのキャッシュをみないようにする方法は?

1
投稿者投稿内容
toute
会議室デビュー日: 2003/07/25
投稿数: 11
投稿日時: 2007-04-10 14:48
Ajaxを使って非同期に検索aspの実行結果を取得するアプリを構築したのですが、2回目以降にも初回の実行結果が返ってくる問題で頭を抱えています。
※1.検索asp:DBの検索結果をレスポンスで返すasp(ASP.netではなく、レガシーaspです)
2.Ajaxはprototype.jsを利用

◆Ajax処理抜粋
var ajax = new Ajax.Request
('検索asp',{method:'get',asynchronous:true,
onComplete:callBackFunction ,
requestHeaders:['If-Modified-Since','Wed, 15 Nov 1995 00:00:00 GMT'] });

◆検索asp抜粋
<% Option Explicit
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

Response.Write ☆DB検索結果☆
%>

プロキシサーバを通さないテスト環境では問題なく、プロキシサーバをかましている本番環境で発生したため、プロキシサーバのキャッシュを読んでいるのでは?と疑っています。
一応検索aspにプロキシサーバのキャッシュを読まないように設定したつもりだったんですが、他に必要な設定があるのでしょうか?

ご存知の方、ご教授をお願い致します。





[ メッセージ編集済み 編集者: toute 編集日時 2007-04-10 14:49 ]

[ メッセージ編集済み 編集者: toute 編集日時 2007-04-10 14:53 ]
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-10 15:26
HTTPレベルで確認しないと確かなことは言えませんが
HTTPの"Cache-Control"ヘッダが"no-cache"であるレスポンスにも関わらず
キャッシュした内容を返すようにプロキシが実装されているとしたら
そのプロキシ自体がおかしい(もくしは設定がおかしい)気がします。

RFC2616を確認しましたがCache-Controlヘッダに従うことがMUSTになっていますね。

# Pragmaヘッダしか実装しないHTTP1.0オンリー対応のプロクシ?そんな馬鹿な
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-04-10 17:23
new Date().getTime()をクエリストリングに追加してあげれば、とりあえず解決しませんかね。
toute
会議室デビュー日: 2003/07/25
投稿数: 11
投稿日時: 2007-04-13 14:56
nagise殿、mio殿
ご回答ありがとうございました。
(返答が遅れて申し訳ありません)



(1)IISのキャッシュを見ている?
 ⇒自分のマシンのIISでキャッシュを溜めるって設定にして実行したのですが
  進捗は更新されました。この原因である可能性は薄いかな。

(2)進捗情報取得のAJAX通信ではgetを指定しているが、postならキャッシュされない?
【ご参考】http://www.phppro.jp/news/312
http://blog.pasonatech.co.jp/nextblog/sugiura/2725.html

(3)レスポンスに追加したヘッダが足りない?
下記HPによるとキャッシュされないためには以下のヘッダが必要とのことでした。
http://support.microsoft.com/kb/311006/ja

> <%
> response.expires = 0
> response.expiresabsolute = Now() - 1
> response.addHeader "pragma","no-cache"
> response.addHeader "cache-control","private"
> Response.CacheControl = "no-cache"
> %>

(4)URLに時刻などのユニークIDを付与すると更新される?(mio殿のご回答より)


あたりが試す価値がありそうです。


また、nagise殿がおっしゃるとおり、

nagise殿 wrote:
>HTTPの"Cache-Control"ヘッダが"no-cache"であるレスポンスにも関わらず
>キャッシュした内容を返すようにプロキシが実装されているとしたら
>そのプロキシ自体がおかしい(もくしは設定がおかしい)気がします。

確かにおかしいです。

問題が発生しているのがお客様の環境なので(しかもサーバは外国にあり)お気軽に触れないのですが、何とか(1)〜(4)での確認とプロキシサーバ周り調査を行おうと額策しています。

原因が分かったら報告させて頂きます。


ご協力ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)