Jos*_*oor 5 javascript php ajax jquery
我做了一个Ajax Like Button.单击like按钮后,需要大约800ms - 1100 ms才能执行以下操作:
insertlike.php使用Jquery在后台打开页面insertlike.php页面中添加类似数据库但是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缓存技巧或类似的东西?我还是新手.
编辑:这是我的服务器响应时间速度测试:
您可以遵循基于事件的架构。一旦用户点击喜欢按钮,将消息放入队列中,然后在后台写入数据库(数据网格也可以是这里的解决方案,不确定 PHP 是否有好的数据网格解决方案)。假设数据库记录更新成功,则会发回对客户端的响应。
https://martinfowler.com/articles/201701-event-driven.html
如果您要更新单个表,800 毫秒 - 1100 毫秒似乎不是可接受的时间线。尝试调整你的SQL,检查数据库是否正确调整。尝试使用ConnectionPool等。
在 Facebook 中,a. 除了更新数据库之外,b。它还执行其他后台处理,例如向相关方生成 NewsFeeds 等。我推测 FB 可能会使用基于事件的架构来执行 b 部分,而不是让用户等待。