PHPを用いてツイッターを模したSNSの作成をしています。
その中でいいね機能を、Ajaxを用いて再現しようとしているのですが
ボタンを押下してから処理が帰ってくるまでの時間がタイムラインに表示されている
ツイート数が増えるほど遅くなってしまい、30ツイートほどの段階で2秒ほど
待つことになってしまっています。
速度向上のために改善できる点などないか、ご教授願いたく書かせていただきます。
よろしくお願いいたします。
PHP v7.2.4
JQuery 3.3.1.min.js(CDN)
js
1 // Ajaxでのいいね処理 2 var goodFlg = false; 3 $('.goodForAjax').on("click", function() { 4 if (goodFlg) { 5 return; 6 } 7 8 console.time(); 9 goodFlg = true; 10 var btn = $(this); 11 var good = btn.val(); 12 var count = parseInt(btn.text(), 10); 13 14 btn.prop('disabled', true).html('<span class="oi oi-heart"></span> -'); 15 16 $.ajax({ 17 type:"POST", 18 url:"./classes/good.php", 19 data:{'tweetId':btn.siblings('input[name="tweetId"]').val(), 20 'token':btn.siblings('input[name="token"]').val(), 21 'good':good, 22 }, 23 dataType:'html', 24 }) 25 .done(function(data, status, jqXHR) { 26 if(good == "1") { 27 count--; 28 btn.removeClass('btn-good').val("0").html('<span class="oi oi-heart"></span> ' + count); 29 } else { 30 count++; 31 btn.addClass('btn-good').val("1").html('<span class="oi oi-heart"></span> ' + count); 32 } 33 }) 34 .fail(function(jqXHR, status, error) { 35 alert(error); 36 }) 37 .always(function(jqXHR, status) { 38 goodFlg = false; 39 btn.prop('disabled', false); 40 console.timeEnd(); 41 }); 42 }); 43
ここで出てきている.goodForAjax、input[name="tweetId"]、input[name="token"]等は
ツイート数分存在しています。
追記:Good.php内の処理を全てコメントアウトした場合にも、所要時間は100ms程度しか変わっていないため、大本の原因がこちらにあるのではないかと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/21 02:23
2018/09/21 02:34
2018/09/21 02:38
2018/09/21 02:44
2018/09/21 02:56