在ASp.net MVC中会话变量或静态模型的成本更高

时间:2012-01-21 15:37:45

标签: asp.net-mvc razor

有人告诉我,由于服务器上的过载,总是忽略在编码中使用会话

所以我使用静态模型类来保存多个请求之间的值... !!!

那么静态模型更可取???

3 个答案:

答案 0 :(得分:1)

会话值是每个用户。 静态值是每个应用程序。

如果没有重构代码,它们就不会改变,所以要小心你正确使用它们。

就成本而言,您必须记住评估内存成本和CPU成本。如果保留在会话变量中,两者都会随着Web应用程序的并发用户数量的增加而增加,并且还会以静态或会话方式依赖于对象的复杂性。

如果每个用户会话中的对象相同,则将它们移动到静态变量(应用程序缓存)。 如果每个用户的观点中的对象不同,则使用会话。

最好的解决办法很少是纯粹的,但往往是混合的。

答案 1 :(得分:0)

您必须使用会话来分隔每个用户的值,如果您的程序中包含相同的值,则很好使用静态 - 并且对所有用户都相同每个asp.net池。

我的。 所有用户的静态值都相同。成本较低,因为它们创建了一个并且不使用内存分配,并且每次程序访问它时都会分配,因此对于小值来说速度要快一些,对于更多数据量来说要快得多。

静态值不是线程安全的,如果您使用多线程,则需要处理此问题,或者在没有会话的页面上调用它们。

我希望这会有所帮助。

答案 2 :(得分:0)

另外,当应用程序死亡时静态值会丢失,而会话值不一定(有很多持久会话提供程序)。