在asp.net中使用太多会话的缺点
|
在ASP.NET中,会话使我们能够在用户在Web应用程序中导航ASP.NET页面时为用户存储和检索值.但是,不鼓励使用过多的会话.为什么?使用太多会话有什么缺点? 感谢那些愿意回答的人. 解决方法记忆和/或表现如果存储会话状态进程(默认值),则所有会话数据都存储在应用程序池的本地内存中.如果您有数千名用户,您可以看到为什么这可能是一个问题.当开发人员不再需要删除会话变量时,问题会变得更糟(由于很难控制访问网页的顺序)和/或用户不这样做显式注销(例如,通过关闭浏览器窗口),这使得所有这些内存仍然分配但不再使用. 如果将会话状态存储在进程外(例如,在SQL Server或单独的状态服务器中),则所有会话变量最终都会越过网络.随着您添加更多变量,越来越多的数据必须被拉过来.这最终可能会降低性能. 并发 如果Web应用程序使用会话状态,则必须保护访问会话状态的数据免受竞争条件和其他多线程问题的影响.因此,ASP.NET会自动序列化任何使用会话的请求.如果您同时发送两个请求,ASP甚至不会在第二个请求启动,直到第一个请求完成.这可能会导致使用大量AJAX或其他应该是异步的逻辑的应用程序出现意外和性能不佳的情况. 基础设施 如果您使用本地内存进行会话状态,并且您的Web应用程序是负载平衡的,则负载均衡器必须使用IP地址或cookie强制执行会话粘性.这会以负责处理请求的方式限制负载均衡器 – 特定会话的所有请求始终命中同一服务器 – 这会降低整体性能并消除冗余. 数据丢失 如果应用程序池循环使用,则该应用程序池上运行的所有会话都将失去会话状态,通常需要用户注销并重新开始. 代码设计不佳 会话变量本质上是全局变量.过度使用全局变量往往会导致代码结构松散.变量应始终尽可能紧密地限定范围. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-5 – 使用FormsAuthenticationTicket的MVC Ide
- asp.net邮件添加ReplyTo
- entity-framework – 数据读取器与指定的模型不兼容
- asp.net-mvc – ASP.NET MVC – 如何获取一个URL而不是一个
- asp.net-mvc – 如何将ms显示从LHS移动到RHS
- ASP.NET自定义用户控件动态添加
- asp.net – 为什么%=%标记呈现为“%=%”?
- asp.net – 发布网站项目时Temp路径太长
- asp.net-mvc-3 – 修改StringLength验证的默认ErrorMessage
- asp.net-mvc – 可以在mvc JsonResult控制器方法上使用Outp
- 查看服务器运行多少个ASP.NET Core程序
- asp.net – 什么是Container.DataItem?
- asp.net-mvc – 为什么MVC4捆绑捆绑Knockout.js?
- asp.net – 如何尊重“从无Cookie域中提供静态内
- ASP.NET Web Api HttpResponseException 400(错误
- asp.net-mvc – 如何添加代码隐藏页面到视图或部
- asp.net – 如何以程序方式检测漫游器
- asp.net-mvc – 通过Gitignore递归地包含Nuget D
- 使用HtmlAnchor或ASP.NET HyperLink作为导航页内
- ASP.NET解决方案与类库项目
