如何增加我的Ajax像按钮速度(Jquery + PHP)

Jos*_*oor 5 javascript php ajax jquery

我做了一个Ajax Like Button.单击like按钮后,需要大约800ms - 1100 ms才能执行以下操作:

  • insertlike.php使用Jquery在后台打开页面
  • insertlike.php页面中添加类似数据库
  • 使用JSON确认
  • 将like按钮颜色变为绿色.

但是Facebook's和其他网站的Like按钮工作得非常快.

Facebook在点击时直接更改类似按钮的颜色,或者仅在将数据添加到数据库后才更改?

这是我的代码:

index.php 用于发出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;
});
Run Code Online (Sandbox Code Playgroud)

代码里面 insertlike.php

<?php

// Add to Database code 

$response = new \stdClass();
$response->addremove = "".$addremove."";
$response->addedornotsend = "".$addedornotsend."";
die(json_encode($response));
Run Code Online (Sandbox Code Playgroud)

有什么方法可以插入类似按钮的速度吗?也许一些PHP缓存技巧或类似的东西?我还是新手.

编辑:这是我的服务器响应时间速度测试:

在此输入图像描述

JRR*_*JRR 2

您可以遵循基于事件的架构。一旦用户点击喜欢按钮,将消息放入队列中,然后在后台写入数据库(数据网格也可以是这里的解决方案,不确定 PHP 是否有好的数据网格解决方案)。假设数据库记录更新成功,则会发回对客户端的响应。

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

如果您要更新单个表,800 毫秒 - 1100 毫秒似乎不是可接受的时间线。尝试调整你的SQL,检查数据库是否正确调整。尝试使用ConnectionPool等。

在 Facebook 中,a. 除了更新数据库之外,b。它还执行其他后台处理,例如向相关方生成 NewsFeeds 等。我推测 FB 可能会使用基于事件的架构来执行 b 部分,而不是让用户等待。