2017-10-17 2 views
5

私はAjaxのようなボタンを作った。 私のAjaxのようなボタンのスピードを上げる方法(Jquery + PHP)

  • insertlike.phpページ
  • などを確認して、データベースへのなどを追加jQueryの
  • を使用してバックグラウンドで

    • オープンinsertlike.phpページ:次のことを行うために1100ミリ - などのボタンをクリックした後、それが周りに800msかかりますJSONを使用する
    • ボタンの色を緑に変えます。

    Facebook'sと他のウェブサイトのLikeボタンは非常に高速です。

    クリックするとボタンの色を直接変更するか、データベースに追加した後に変更するだけですか?

    これは私のコードです:insertlike.php

    <?php 
    
    // Add to Database code 
    
    $response = new \stdClass(); 
    $response->addremove = "".$addremove.""; 
    $response->addedornotsend = "".$addedornotsend.""; 
    die(json_encode($response)); 
    

    の内側のようなボタンのスピードを挿入する方法をAJAXリクエスト

    $(".insertlike").submit(function(e) { 
    
        var data = $(this).serialize(); 
        var url = $(this).attr("action"); 
        var form = $(this); 
        $.post(url, data, function(data) { 
        try { 
         data = JSON.parse(data); 
         $(form).children("button").html(data.addremove + " Watchlist"); 
         $(form).children("input#addedornotsend").attr("value",data.addedornotsend); 
    
        } catch (e) { 
         console.log("json encoding failed"); 
         return false; 
        } 
    }); 
        return false; 
    }); 
    

    コードを作るために

    index.phpコード?たぶん、いくつかのPHPのキャッシュトリックか何かのような?私はまだ初心者です。

    編集:これは私のサーバーの応答時間の速度テストです:

    enter image description here

    +0

    あなたはボタン機能のようにどのようにfacebookを尋ねています...これは、あなたが調査している他のサイトがwebsocketのようなリアルタイムのデータを使用しているかもしれないことを知っているすべてのためです。それらを使用せずに、あなたはアップデートを確認したい場合は、ajaxコールとサーバ側が完了するまで待つしかありません。 – NewToJS

    +0

    あなたはすべてがうまくいったと想像してボタンをペイントすることができます。終了したら、何か間違っているとエラーメッセージを表示します。 – vortin

    +0

    このコードでは、* like *ボタンの上にidが 'addedornotsend'の入力があることを示唆しています。あれは正しいですか? –

    答えて

    2

    イベントベースアーキテクチャに従うことができます。ユーザーが同様のボタンをクリックすると、メッセージをキューに入れ、バックグラウンドでDBに書き込むとすぐに(データグリッドは、ここでの解決策になる可能性があり、PHPに優れたデータグリッドソリューションがあるかどうかはわかりません)。 DBレコードが正常に更新されたと仮定して、クライアントへの応答が返されます。

    https://martinfowler.com/articles/201701-event-driven.html

    あなたは、単一のテーブルを更新する場合は、800ms - 1100ミリ秒が許容タイムラインではないようです。 SQLをチューニングして、DBが適切に調整されているかどうかを確認してください。ConnectionPoolなどを使用してください。

    Facebookでは、好きなところでDBを更新する以外に、b。また、関連当事者にNewsFeedsを生成するような他のバックグラウンド処理も行います。私は、FBがイベントベースのアーキテクチャを使用してユーザーを待たせるのではなく、パートbを行っている可能性があると推測しています。

    1

    なぜあなたは. submit()をやっている、あなたは. click()をやるべき。

    そして、Facebookがやっていることは、おそらく応答を待つことなく、クリックした直後のボタンの色を変えていることでしょう。応答がエラーになる場合は、おそらくボタンの色が正常に戻されます。

    +0

    その証拠はありますか?または単に丁寧な推測ですか? – Shirkam

    +0

    ボタンをクリックするとフォームが送信されるので、結局同じことではありませんか? –

    +0

    @Shirkamそれは推測です(好みは帯域幅を絞ったとしても長いと思われなかったのでかなり確信していますが)。 –

    関連する問題