使用ajax实时进行大量计数操作

时间:2013-12-18 12:07:27

标签: javascript php jquery ajax real-time

在我的网上商店,订单系统分为几种形式(每个产品系列一个)。每个系列大约有100种不同尺寸的产品(总共约500种),因此在几年内它将是10个系列x 500种产品。

这是一个批发门户网站,因此客户通常会订购许多产品,通常是批量生产。另一方面,当超过20个客户同时订购时,可能永远不会出现这种情况。

我想计算并显示订购产品的数量和客户的总现金金额。以下是我如何将订单数据保存在$ _SESSION数组中:

$_SESSION['input'][34]['s']===20 // This means the customer ordered 20x product with id 34 in size S.
$_SESSION['prices'][34]===39.99 // This is the price of product with id 34.

每次客户更改集合时都会更新$ _SESSION数组(=使用新表单进入网站)。

我的问题是显示总订单现金金额的最佳方式是什么:

  1. 依靠来自$ _SESSION数组的数据。每次用户更改输入字段的值(jQuery中的keyUp事件)时,计算起始总和与当前总和之间的总差异
  2. 使用计算所有内容的每个keyUp触发ajax请求,更新$ _SESSION,然后计算并显示总现金金额。
  3. 简单非实时解决方案:只需提交表单的“更新”按钮,新请求只会更新页面。
  4. 这就是我的想法:数字1.和2.看起来非常好但很难做(对我而言)并且它们可能对服务器造成太大的负担。 3号对用户来说不太方便,但它很容易做到并且使用最少的服务器资源

    有什么建议吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知(看你如何提及Ajax)是商店在每次更改集合时都不刷新页面(例如更改特定产品的数量,添加/从篮子中删除等等) )。

所以假设这个(单页界面的想法)确实如此:

对我来说,这意味着当用户肯定提交购物车时,您应该只改变购物车服务器端的内容(用于结账或更换商店中的页面)。因此,我不会在购物期间向后端执行大量请求。由于数据已经存在于DOM中(我假设您在屏幕上显示文章)我建议在客户端执行JavaScript中的价格计算和购物车内容突变,而不是通过后端请求总和并更新后端在每次变化。这大大减少了所需的HTTP请求数量以及服务器/数据库的压力。

现在可能会争论这些是您想要在客户端执行的操作,但最终您仍然会在后端验证购物车内容,以防止恶意用户发出有趣的请求。订单验证页面仍应显示后端计算的所有内容,以确保订购的内容是付费内容。

希望这有任何帮助。