所以我有一个基本的
$.ajax( { url : 'MyController/MyAction',
method : 'POST',
async: true,
.
. } );
可以非常频繁地调用,因为它是事件驱动的。就像如果用户令人讨厌,它可能会在 1 秒内调用 50 次。它更新数据库中的值。
我的朋友告诉我,更新可能以错误的顺序发送到数据库。这是真的吗?这导致我严重的认知失调,今晚我无法入睡。
我应该提到,数据库中更新的这些值与用户相关联。特别是,data
就像
data : { userId : '21EC2020-3AEA-4069-A2DD-08002B30309D',
answerId : '69',
val : 'd' }
其中快速连续变化的唯一值是 answerId
和 val
.
不幸的是,我的理解是"是的。订单不保证"。您在 1 秒内发送 http 请求 50 次,服务器将其保存到数据库。当网络良好且服务器强大时,可以按顺序保存到数据库。但是,如果http服务器繁忙或网络中断,它不能保证数据仍然总是按实际发生的顺序排序。例如,1 或 2 个数据订单将在数据库中交换。
我的建议是:如果顺序非常关键,更新流量很大,你应该在http数据中添加一个发生时间,并将其保存到DB。当您从数据库中选择数据时,您可以按发生时间排序,它将确保它在事件发生时具有正确的顺序,以避免由服务器或网络繁忙引起的错误顺序。