質問編集履歴

1 情報の追加

kft123

kft123 score 8

2018/09/21 11:15  投稿

Ajaxでのpost処理が遅い
PHPを用いてツイッターを模したSNSの作成をしています。
その中でいいね機能を、Ajaxを用いて再現しようとしているのですが
ボタンを押下してから処理が帰ってくるまでの時間がタイムラインに表示されている
ツイート数が増えるほど遅くなってしまい、30ツイートほどの段階で2秒ほど
待つことになってしまっています。
速度向上のために改善できる点などないか、ご教授願いたく書かせていただきます。
よろしくお願いいたします。
PHP v7.2.4
JQuery 3.3.1.min.js(CDN)
```js
 // Ajaxでのいいね処理
 var goodFlg = false;
 $('.goodForAjax').on("click", function() {
   if (goodFlg) {
     return;
   }
   console.time();
   goodFlg = true;
   var btn = $(this);
   var good = btn.val();
   var count = parseInt(btn.text(), 10);
   btn.prop('disabled', true).html('<span class="oi oi-heart"></span> -');
   $.ajax({
     type:"POST",
     url:"./classes/good.php",
     data:{'tweetId':btn.siblings('input[name="tweetId"]').val(),
           'token':btn.siblings('input[name="token"]').val(),
           'good':good,
     },
     dataType:'html',
   })
   .done(function(data, status, jqXHR) {
     if(good == "1") {
       count--;
       btn.removeClass('btn-good').val("0").html('<span class="oi oi-heart"></span> ' + count);
     } else {
       count++;
       btn.addClass('btn-good').val("1").html('<span class="oi oi-heart"></span> ' + count);
     }
   })
   .fail(function(jqXHR, status, error) {
     alert(error);
   })
   .always(function(jqXHR, status) {
     goodFlg = false;
     btn.prop('disabled', false);
     console.timeEnd();
   });
 });
```
ここで出てきている.goodForAjax、input[name="tweetId"]、input[name="token"]等は
ツイート数分存在しています。
ツイート数分存在しています。
追記:Good.php内の処理を全てコメントアウトした場合にも、所要時間は100ms程度しか変わっていないため、大本の原因がこちらにあるのではないかと考えています。
  • PHP

    38485 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • JavaScript

    38095 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • jQuery

    13444 questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る