我在一个 ASP.NET 应用程序中有大量的 AJAX 请求。
一旦用户登录我们的 Web 应用程序,就会创建一个会话来存储该用户状态的信息。目前,我们保持会话数据一致的解决方案非常简单和残酷:每个请求在被处理之前都需要获取一个独占锁。
这适用于传统的 Web 应用程序。但是,当 Web 应用程序转而支持 AJAX 时,它变得不高效。很有可能多个 AJAX 请求同时发送到服务器而不重新加载网页。如果所有的 AJAX 请求都被排他锁序列化,那么响应就不会那么快了。无论如何,许多不访问相同会话变量的 AJAX 请求也会被阻止。
如果我们没有为每个请求设置独占锁,那么我们需要仔细处理所有竞争条件以避免死锁。恐怕这会使代码变得复杂和错误。
那么,是否有任何最佳实践来保持会话数据一致并保持代码简洁明了?