gpt4 book ai didi

asp.net - session 状态阻止并发处理的异步 ajax 调用

转载 作者:行者123 更新时间:2023-12-01 01:17:22 24 4
gpt4 key购买 nike

我试图在 document.ready 上同时对我的 .NET 页面方法进行 6 个异步 jQuery ajax 调用,以从数据库请求不同的数据集,然后将其呈现为图表给用户。

问题是,当一张图表生成时间较长时,它会锁定接下来5张图表的生成,例如,当每张图表生成时间为1分钟时,用户将大约等待6分钟,而不是我认为使用异步 ajax 调用和并行处理页面方法时需要 1 - 2 分钟。

在阅读了这个论坛中的很多有用的帖子后,我发现这是因为我必须在页面方法中读取和写入 session 对象,而asp.net将锁定整个请求,从而使它们运行依次。

我看到有人建议将 session 状态设置为仅在 @Page 标记中读取,但这并不能解决我的问题,因为我也需要写入 session 。我考虑过从 inProc session 转移到 sql 数据库 session ,但我的 session 对象不可序列化并且在整个项目中使用。我也无法更改为使用缓存,因为 session 包含用户特定的详细信息。

有人可以帮忙并指出我正确的方向吗?我已经花了几天时间来调查这个页面的低效率问题,但仍然没有找到一个好的方法。

提前致谢

最佳答案

根据我个人的经验,切换到 SQL session 不会解决这个问题,因为所有并发线程都将在 SQL 中阻塞,因为第一个线程将在数据库中的一行或多行上持有独占锁。

我很好奇为什么你的 session 对象不可序列化。我能想到的唯一解决方案是使用数据库表来存储您在 session 中保留的用户特定数据,然后仅在更新用户数据时保留数据库锁。

您可以使用 ASP.NET session ID 或其他唯一的 Cookie 值作为数据库 key 。

关于asp.net - session 状态阻止并发处理的异步 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11236885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com