電子書籍の厳選無料作品が豊富!

JqueryからCGIを呼び出して、DBと接続し、その戻り値をHTMLページに反映しています。
処理をして、ブラウザを再起動すると処理されたデータで表示されるのですが、ブラウザを再起動しないと、処理する前のデータが表示されます。ページをリロードしても同じです。

下記のようにCGIを呼び出してDBと接続をしているのですが、
キャッシュがあると良くないと言うことが書いてあったので、

cache: false, を追加したり、

$.ajax({
type: 'GET',
url: '~.cgi',
cache: false, //←追加
data: ''',
success: function(result){
if (result != ''){
処理をする
}
}


$.ajaxSetup({
cache: false
});

↑を追加してみたりしたのですが、これらの部分からあとのプログラムが動きません。
(エラーになっている?ような感じです)

これらを削除してプログラムを動かすと、キャッシュが残っているような結果が帰ってきます。

要するに、DBの値を修正、削除をして、その後のデータを表示したいのですが、
削除後、修正後のデータが表示されません。
ブラウザを再起動すると、修正、削除されている状態で表示されます。

ブラウザを再起動しなくても処理をした後の結果がHTMLページに表示されるようにしたいです。

わかりにくい説明で申し訳ございませんが、ご不明な点はお聞き下さい。
どなたかおわかりになる方がいらっしゃいましたら教えて下さい。
よろしくお願いいたします。

A 回答 (2件)

#1です。


時間が経ちましたが、まだ晒されてるようなので。

キャッシュについては、クライアント側だけでなく、サーバサイドや、経路中のプロキシサーバ等にも存在するので、一括で有効な方法というものはありません。

対策1:
メソッドを"POST"にする。

対策2:
リクエストオブジェクトに{ ticts = 時刻シード乱数 }等を追加し、毎回異なったクエリが出るようにする。

対策3:
サーバが返答するResponseで、LocalCacheやProxyCacheを切るパラメータを加える。

対策4:
サーバキャッシュの設定を適当な値に調整する(QueryByParamやCachePeriod等)。

Ajaxで応答値が更新されない問題なら、1か2で解決すると思います。
更新系のリクエストでGETを使う事は少ないので。。
更新リクエスト内容が丸見えになるのは、少々危ない気がします。
    • good
    • 0
この回答へのお礼

shockatz さん

ご回答ありがとうございました。
お返事が遅くなりまして申し訳ございません。

教えていただいたことをプログラムに組み込んでうまく動くように試行錯誤しておりました。

教えていただきました、対策1でなんとかうまくいきそうです!

本当にありがとうございました。
こういう仕様なのかと諦めておりましたが、ユーザビリティも悪いし何とかならないかと思っていました。

ありがとうございました。
また何かありましたらよろしくお願いいたします。

お礼日時:2013/10/31 17:28

Ajaxパラメタで、cache:falseとしているのにキャッシュされている?



ひょっとしてtypeが'GET'になっているためと違います?
単なるクエリ付URLアクセスになるため、サーバ側がデフォルト動作で伽主動作しているのでは。

それでもダメなら、サーバ側で強制的にサーバキャッシュをoffに。
まだ残るなら、最後の手段で一時パラメータ(ticks等)を付加するとか。
    • good
    • 0
この回答へのお礼

shockatz さん

ご回答ありがとうございます。
はい、そうなんです。

typeが'GET'になっているとダメなのでしょうか。

サーバ側で強制的にサーバキャッシュをoff というのはどうやってやるのでしょうか。
使っているのはPerlを使っています。

お礼日時:2013/09/17 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!