jQueryでAJAXをやっています。みなさんよく使う機能ですよね。
画面遷移無しで動的に画面を変えれるので便利です。
さて、ここで問題発生。
何度かDB抽出→表示を繰り返すとレスポンスが悪くなるんです。
私のところのサーバはメモリが512MBで動いている考えられない仕様。
DB廻りで解放してないのかなぁ・・・とチェックしてみてもちゃんと解放している。
調べてみたらJavaScriptってメモリリークがあるんですね(^^;
ってことで先人たちの知恵を拝借。
どうやらjQueryのイベントに対して解放するロジックを手で書いてやらないとダメみたいです。
————————————————————-
$(document).ready(function() {
$(‘#btnExecute’).click(function() {
//画面初期化
$(“#Tab1”).html(‘hogehoge’);
$(‘#btnExecute’).click() = null; //イベントに対してnullを送る
})
});
————————————————————-
これで解決しました。見る限りちゃんと解放されているようです。
C言語時代ではこの手の処理は当たり前だったそうですね。
#C言語は挫折した者です(^^;
$(‘#btnExecute’).click() = null;
って、
var $btnExecute = $(‘#btnExecute’);
$btnExecute.trigger(“click”);
$btnExecute = null;
ってしている様なことなので無意味では?(メソッドチェーンしてるので変数あるわけでもないですし。
正しくは
$(‘#btnExecute’).on(“click”,function(){ ~ })
で解放する必要のある場合に於いて
$(‘#btnExecute’).off(“click”)
ではないでしょうか?
※バージョンによっては on をbind 、 off を unbind に置き換えて下さい。
>junerさま
ご指摘ありがとうございます。
jQueryはまだまだ初心者なので至らないところがありまして。
試してみます。