【发布时间】:2010-01-18 21:36:55
【问题描述】:
我正在尝试使帖子投票类似于堆栈溢出投票赞成和反对,现在我使它与(但它有效的方法)一起工作,但感觉有些不对劲,希望有人会提出一些建议有用的调整。这是我的 jquery 代码:
var x = $("strong.votes_balance").text();
$("input.vote_down").click(function(){
$.ajax({
type: "POST",
url: "http://localhost/questions/vote_down/4",
success: function()
{
$("strong.votes_balance").html((parseInt(x) - parseInt(1)));
$("input[type=button]").hide();
$(".thumbsup_hide").show();
}
});
});
$("input.vote_up").click(function(){
$.ajax({
type: "POST",
url: "http://localhost/questions/vote_up/4",
success: function()
{
$("input[type=button]").hide();
$("strong.votes_balance").html((parseInt(x) + parseInt(1)));
$(".thumbsup_hide").show();
}
});
});
});
这是我的 HTML:
<div class="thumbsup thumbsup_template_up-down" id="thumbsup_49">
<form method="post" id="voting_form">
<input type="hidden" value="49" name="thumbsup_id"/>
<span class="thumbsup_hide">Result:</span>
<strong class="votes_balance"><?=$row_q->post_vote?></strong>
<input type="button" title="Good Comment!" value="+1" name="thumbsup_rating" class="vote_up"/>
<input type="button" title="Bad Comment!" value="-1" name="thumbsup_rating" class="vote_down"/>
</form>
</div>
$row_q->post_vote 等于某个数字。现在,当我点击投票按钮时,它会增加 strong 的值,如果我点击投票,它会减少它。
我正在使用 CI(codeigniter) 而不是原生 php。
我如何衡量它的性能,不久前投票赞成或投票反对花了两秒多的时间来执行,我在我的查询中添加了 LIMIT 1,现在它的工作速度更快了,我认为这应该执行得更快。谢谢你们的cmets
是的,很抱歉在这里省略了我的投票赞成和反对票功能:
$this->db->query("UPDATE $table SET $what_field = ($what_field + 1) $wheremore WHERE $what_id = '$value' LIMIT 1");
并在下方投票:
$this->db->query("UPDATE $table SET $what_field = ($what_field - 1) $wheremore WHERE $what_id = '$value' LIMIT 1");
更新我认为事情通常很慢的原因是因为我对 jquery 的经验不足,我认为我的表还不错
更新 II
我刚刚从 jquery ajax 函数中删除了 php 部分,只是为了将数字增加 1,但它仍然运行得很慢。
更新 III
当我使用 phpmyadmin 运行查询时,它会在 0.3 秒到 1.77 秒之间运行,但由于某种原因会有所不同。
【问题讨论】:
-
您使用的是哪个数据库引擎?
-
投票时不要忘记
Who。 -
@Juha 我正在使用 Mysql ,@Martijn - 我稍后会担心这些事情我只是想提高性能
-
摆脱 jQuery:尝试制作一个普通的 HTML 表单,您可以在其中针对您的投票 URL localhost/questions/vote_up/4 进行 POST。如果花的时间一样长,那就不是 jQuery。
-
您现在也可以删除该查询,看看是否会有所不同。如果不是,那是代码中的其他内容(可能是加载应用程序的启动阶段及其所有配置花费的时间最多?)。
标签: javascript jquery ajax performance