Jqueryのキャッシュについて

このQ&Aのポイント
  • Jqueryのキャッシュにより、ブラウザを再起動しないと処理前のデータが表示される現象が発生しています。
  • キャッシュを無効化するために、$.ajax関数のcacheオプションをfalseに設定や、$.ajaxSetup関数でキャッシュを無効化する方法を試しましたが、プログラムが動かなくなりました。
  • 修正や削除したデータを即座に表示させるために、ブラウザを再起動せずに処理結果を表示する方法を教えていただきたいです。
回答を見る
  • ベストアンサー

Jqueryのキャッシュについて

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ページに表示されるようにしたいです。 わかりにくい説明で申し訳ございませんが、ご不明な点はお聞き下さい。 どなたかおわかりになる方がいらっしゃいましたら教えて下さい。 よろしくお願いいたします。

noname#223023
noname#223023
  • AJAX
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

#1です。 時間が経ちましたが、まだ晒されてるようなので。 キャッシュについては、クライアント側だけでなく、サーバサイドや、経路中のプロキシサーバ等にも存在するので、一括で有効な方法というものはありません。 対策1: メソッドを"POST"にする。 対策2: リクエストオブジェクトに{ ticts = 時刻シード乱数 }等を追加し、毎回異なったクエリが出るようにする。 対策3: サーバが返答するResponseで、LocalCacheやProxyCacheを切るパラメータを加える。 対策4: サーバキャッシュの設定を適当な値に調整する(QueryByParamやCachePeriod等)。 Ajaxで応答値が更新されない問題なら、1か2で解決すると思います。 更新系のリクエストでGETを使う事は少ないので。。 更新リクエスト内容が丸見えになるのは、少々危ない気がします。

noname#223023
質問者

お礼

shockatz さん ご回答ありがとうございました。 お返事が遅くなりまして申し訳ございません。 教えていただいたことをプログラムに組み込んでうまく動くように試行錯誤しておりました。 教えていただきました、対策1でなんとかうまくいきそうです! 本当にありがとうございました。 こういう仕様なのかと諦めておりましたが、ユーザビリティも悪いし何とかならないかと思っていました。 ありがとうございました。 また何かありましたらよろしくお願いいたします。

その他の回答 (1)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

Ajaxパラメタで、cache:falseとしているのにキャッシュされている? ひょっとしてtypeが'GET'になっているためと違います? 単なるクエリ付URLアクセスになるため、サーバ側がデフォルト動作で伽主動作しているのでは。 それでもダメなら、サーバ側で強制的にサーバキャッシュをoffに。 まだ残るなら、最後の手段で一時パラメータ(ticks等)を付加するとか。

noname#223023
質問者

お礼

shockatz さん ご回答ありがとうございます。 はい、そうなんです。 typeが'GET'になっているとダメなのでしょうか。 サーバ側で強制的にサーバキャッシュをoff というのはどうやってやるのでしょうか。 使っているのはPerlを使っています。

関連するQ&A

  • キャッシュの問題?

    半年ほど前に某サイトである区分をHTMLに追加したところ、区分の追加前のHTMLが読み込まれる事象がクライアント側で発生しています。 区分の追加前のHTMLではその後の画面遷移が出来ないため、問い合わせが来てしまいます。 考えられることとしては古いキャッシュが残っていたために、最新のページが表示されなかったと思ったのですが、区分追加後に最新のページが表示されたことがあるのに、ある日使うといきなり古いページが表示されているようです。 特定のOS・ブラウザだけで発生している事象ではなく、また再現ができないため、対処に困っています・・・。 HTML上にページのローカルキャッシュを防ぐ方法もあるようですが、そうするとWEBサーバのアクセスが急増し、レスポンス悪化を招いてしまう恐れがあるため避けたいところです。 考えられる原因、またその対処法として何かありますでしょうか?よろしくお願いします。

  • キャッシュの問題?

    半年ほど前に某サイトのログインページにある区分をHTMLに追加したところ、区分の追加前のHTMLが読み込まれる事象がクライアント側(企業・一般家庭共に)で発生しています。追加した区分によって、表示する画面が異なるため、区分追加前のHTMLではその後の画面遷移が出来ません。 【追加した文(略)】 <input type="hidden" name="aaaaa" value="01"> 考えられることとしては古いキャッシュが残っていたために、最新のページが表示されなかったと思ったのですが、区分追加後に最新のページが表示されたことがあるのに、ある日使うといきなり古いページが表示されているようです。特定のOS・ブラウザだけで発生している事象ではなく、また再現ができないため、対処に困っています・・・。 HTML上にページのローカルキャッシュを防ぐ方法もあるようですが、そうするとWEBサーバのアクセスが急増し、レスポンス悪化を招いてしまう恐れがあるため避けたいところです。 考えられる原因、またその対処法として何かありますでしょうか?よろしくお願いします。

  • jQuery mobileでキャッシュ削除するには

    困っているので教えて下さい。 最終的にはiOSとAndroid用にアプリにする予定になっておりますが、 jQueryMobileで作成し、現段階では動作や表示確認のためサーバにアップして確認しています。(aの#リンクがオフラインでは確認できないため) アプリにしたことがないので、わからないのですが、サーバで確認したところ、キャッシュが残ってしまっているようで、更新前のページが表示され、毎回リロードしないと、最新の状況が表示されず困っています。 $.mobile.page.prototype.options.domCache = false と、false設定になっていますが、それでもダメだし、各ページに別途、キャッシュを削除するようなタグを入れたりしても、やはりダメみたいです。 /* clear cache page */ $(document).on('pagehide', function(event, ui) { var page = $(event.target); page.remove(); }); ↑こういったタグです。 あまり難しいことはわからないのですが、いつも最新の状況が表示されるような方法はありませんでしょうか? また、もしアプリ化した場合、こういったキャッシュ機能っていうのは、アプリの仕様に問題ありますか?もし関係ないようなら、このままアプリ化しようと思いますが・・・。 アプリだけでなく、WEBにも載せておきたいと思っているのですが、完成した状態で公開すれば、見て下さった方は最新の状態でキャッシュされるのでしょうが、更新した時等に最新の状態で見られないというのは問題だと思いまして、困っておりました。 よろしくご指導のほど、お願いいたします。

  • キャッシュを読まない方法

    CGI(Perl)を実行するとファイルを読みに行き、毎回違った内容をブラウザに表示する。・・・というものを作ったのですがブラウザがキャッシュを先に見にいってしまい、(おそらく)CGIが実行しません。どうにかしてキャッシュを見に行かないようにしたいのですが。 助けてください。お願いします。

    • ベストアンサー
    • CGI
  • キャッシュの制御

    HTMLページにアクセスした際に、ローカルにキャッシュを作成しないよう制御したいのです。 Webで色々と調べて、 <HEAD>~</HEAD>の間に <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> を追加しましたが、ページ表示時にIEのTempフォルダ 「C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files」 にファイルが作成されます。 実際に実現したいことというのが、 1.通常OWS(OracleWebServer)でシステム動作 ↓ 2.データメンテナンス時にOWS停止 ↓ 3.IISを起動し、データメンテナンス中である旨、ページを表示 ↓ 4.データメンテナンス完了後、IIS停止、OWS起動 ↓ 5.通常のシステム画面を表示 を実現したいのですが、3の時点でキャッシュ無効のHTMLページを表示してもキャッシュが作成され、4→5の時にメンテナンス中の画面が表示されたままになり、リロードしても回避されない(キャッシュを消さないと通常のシステム画面が表示されない)状態なのです。 環境は OS:WindowsNT Server 4.0 OWS:Oracle WebServer2.1 IIS:InternetInformationServer4.0 です。 マニアックな質問で申し訳ないのですが、ご回答頂けますよう宜しくお願い致します。

  • googleキャッシュに残ったHTMLを削除したい

    googleのキャッシュに残ってしまった「HTML」データを削除したいと思います。 <ここまでの経緯> (1)PDFファイルを公開した。 (2)PDFファイルの内容に問題があったので、サーバからPDFファイルを削除した。 (3)急いで削除したかったので、「ウェブページ削除リクエストツール」を使ってみたが、検索結果には残ったままの状態である。(googleのリクエストツールは「削除しました」との回答を表示しているが、1週間経った現在でも、検索結果には表示されたままである) (4)検索結果のうち、PDFのデータは、ファイルが見られなくなった。(OKの状態) (5)同じファイル名の「HTML」をクリックすると、問題のあるPDFのHTML変換データが表示されてしまう。 (6)同じファイル名で違うPDFデータ(問題のない新しいデータ)を再度アップロードした。(検索ロボットが巡回したら新しいHTMLデータができるのではないか?、という予測で。。。) (7)PDFは新しいものになったがHTMLのほうは以前の問題のあるデータが表示されてしまう。 このような状態です。 意図的に表示しているものではなく、サーバから削除したファイルについて、googleがHTMLに変換した内容が、google側のキャッシュに残ってしまっているという状態と考えています。 このように、google本体のキャッシュに残ってしまった「HTML」データは、消すことができないのでしょうか? ご存知の方教えてください。

  • InternetExplorerのキャッシュ

    お世話になります。 Internet Explorerでキャッシュの容量制限をした場合の挙動について、もしご存知の方がいましたら教えてください。 たとえば容量を250Mに設定したとして、キャッシュが250Mを超えた場合、Internet Explorerはどういう処理をするのでしょうか? (1)キャッシュされた日が古いデータを削除して新しいキャッシュを追加する (2)使用頻度の古いデータを削除して新しいキャッシュを追加する (3)新しいデータをキャッシュしない (2)であれば理想なのですが、(3)の場合は定期的にキャッシュの削除を行う必要があるのかなと。 一時ファイルの容量制限やキャッシュの削除方法は分かるのですが、会社のPCで業務の効率を上げるため、実際どう動いているのかを知りたいです。 環境はWindows7で、IE8です。 ご存知の方がいましたら、よろしくお願い致します。

  • smartyのページキャッシュについて

     例えば動的に表示するページにおいて、DBへ登録処理が行われた時に同時にsmartyでページキャッシュを作成するということを実現したいのですが、ページキャッシュを作成する方法は、キャッシュの有効期限を設定する方法しかないのでしょうか?  こうすることで、一部の動的ページを静的と同じ速度で表示できるのかなと考えているのですが、ご存知の方よろしくお願いします。  PHP5.1.1  smarty2.6.5

    • 締切済み
    • PHP
  • キャッシュクリア

    パソコンでのキャッシュクリアは ブラウザ終了時に履歴を削除するというのはあっても ブラウザ起動中には手動で削除するしかないように思うのですが、 何故、一定のキャッシュが溜まったら自動で削除されるような機能が、 ブラウザには無いのでしょうか? それとも自動削除するブラウザはありますか?

  • CGIなのにIE8のときキャッシュが残ってしまう

    jQueryの$.ajaxでPerl/CGIの出力結果を参照し、JavaScriptでそれを元に処理をしているのですが、XP/IE8環境でキャッシュが残ってしまう現象に遭遇し困っています。CGIの出力結果の時間に関係する処理なので、HTML上でタイムリーな表示にならず、とても困っています。Chrome、Firefox、Opera、Safariでは正常に動作しているのですが、IE8では動的であるCGIもキャッシュに残して参照する仕様になっているのでしょうか。

    • ベストアンサー
    • CGI

専門家に質問してみよう