![](/img/trans.png)
[英]Why would replacing a div via a GET request through AJAX cause my website to slow down so much compared to no JavaScript at all?
[英]Why is my AJAX request so slow?
这个AJAX请求大约需要一秒钟才能执行,我想知道是否有加速它的方法?
这是一个Twitter风格的后续/取消关注的背景下按钮单击事件。
JS:
$.ajax
({
type: "POST",
url: "follow.php",
data: {id: id, shop_name: shop_name},
context: this,
success: function(data)
{
if ($(this).html() == 'Add')
{
$(this).toggleClass('btn-primary');
$(this).html('<span class="glyphicon glyphicon-ok"></span> Added');
}
else if ($(this).html() == '<span class="glyphicon glyphicon-ok"></span> Added')
{
$(this).toggleClass('btn-primary');
$(this).html('Add');
}
}
});
PHP:
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
include('connect.php');
$id = $_POST['id'];
$user_id = $id['id'];
$shop_name = mysqli_escape_string($con, $_POST['shop_name']);
$feed_id_query = "SELECT DISTINCT feed_id FROM shopaholic WHERE shop_name = '$shop_name'";
$feed_id = mysqli_query($con, $feed_id_query) or die(mysqli_error($con));
$row = mysqli_fetch_array($feed_id);
$feed_id = $row[0];
$query = "SELECT * FROM sh_subscriptions WHERE user_id = $user_id AND feed_id = $feed_id";
$result = mysqli_query($con, $query) or die(mysqli_error($con));
// check if row exists
if (mysqli_num_rows($result) > 0)
{
// row already exists, so check whether it is active
$query2 = "SELECT * FROM sh_subscriptions WHERE user_id = $user_id AND feed_id = $feed_id AND active = 1";
$result2 = mysqli_query($con, $query2) or die(mysqli_error($con));
if (mysqli_num_rows($result2) > 0)
{
// row is active, so deactivate it
$query3 = "UPDATE sh_subscriptions SET active = 0 WHERE user_id = $user_id AND feed_id = $feed_id";
$result3 = mysqli_query($con, $query3) or die(mysqli_error($con));
}
else
{
// row is inactive, so activate it
$query4 = "UPDATE sh_subscriptions SET active = 1 WHERE user_id = $user_id AND feed_id = $feed_id";
$result4 = mysqli_query($con, $query4) or die(mysqli_error($con));
}
}
else
{
// row does not exist, so create it
$query5 = "INSERT INTO sh_subscriptions (user_id, feed_id, active) VALUES ($user_id, $feed_id, 1)";
$result5 = mysqli_query($con, $query5) or die(mysqli_error($con));
}
更新
我正在检查控制台中的AJAX加载时间。 绝大多数的时间都花在“等待”,这我相信是PHP做其工作。 它还加载比较慢的第一时间(从50毫秒慢东西至少),然后通常变快。
您可以尝试的一件事是在两个选择项中都添加“ LIMIT 1”
$feed_id_query = "SELECT DISTINCT feed_id FROM shopaholic WHERE shop_name = '$shop_name' LIMIT 1";
$query = "SELECT * FROM sh_subscriptions WHERE user_id = $user_id AND feed_id = $feed_id LIMIT 1";
由于您在每个查询中仅保留一个结果
同样在这里
$query2 = "SELECT * FROM sh_subscriptions WHERE user_id = $user_id AND feed_id = $feed_id AND active = 1 LIMIT 1";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.