这是一个普遍的问题。使用下面的示例,假设我有一个Javascript,它在PHP脚本上执行AJAX调用以从数据库中提取数据。我可以选择:
a)操纵PHP脚本本身的数据,然后再将其发送回Javascript,OR;
<?php
while ($row = mysqli_fetch_assoc($result))
{
extract($row);
array_push($data, array('product' => $product, 'discount' => $price*0.15));
}
echo json_encode($data);
?>
b)从PHP脚本中获取原始数据并对Javascript进行操作。
<SCRIPT type='text/javascript'>
$.each(json, function(index, element) {
element.discount = 0.15*element.price
}
</SCRIPT>
虽然我已经知道我可以使用选项b)获得更好的性能(服务器端),但我想听听社群是否是一个更明智的选择以及是否有任何反对它的逻辑论据我可能有忽视。谢谢!
注意:
答案 0 :(得分:2)
有些事情你不想在性能或执行时间上吝啬。
我们可以通过JavaScript在客户端层上执行XYZ并不意味着我们应该被迫这样做。 会发生什么
A)如果JavaScript已关闭。 B)您依赖于从POST发布的值。 (想象一下服务器使用$ _POST ['total_amount']的购物车。我将编辑POST或隐藏输入以获取免费内容。
如果你所做的只是纯粹的信息,那么这并不重要,但如果你依赖任何信息,那么你应该多次检查价格。
此外,当您想要开始向服务提供API或其他内容时会发生什么。您的运输现在已损坏,因为它不包含计算的价格。
服务器端,无论哪个更好。正如Duncan所说,SQL可以是一个选项,或PHP。我不喜欢这个,因为一小部分物品的任何收益都可以忽略不计。
答案 1 :(得分:0)
在你的SQL到达你的PHP之前,你最快做到这一点。如果javascript性能优于PHP性能,我也会感到惊讶(你怎么知道这对你更好?只是好奇......)。尽可能多地服务器端通常是一个很好的经验法则。您可以随时添加更多服务器等,但是您无法控制客户端性能。
答案 2 :(得分:0)
两个选项之间的主要区别在于,对于服务器时间,每次需要更改数据中的任何内容时,您需要调用严重影响性能的服务器(从用户的角度来看)。
您可以采用混合方法:使用所有预先计算的数据构建页面,并在JS中使用相同的流程来更新公式 但是我会建议你这样做,因为你的开发成本加倍,而且你将面临爆炸性的维护工作,因为很难同时保持PHP和EX。 JS一致。
2个做出选择的一般建议: