微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 哪个更适合性能视图状态或会话

我必须将数千条记录的数据存储在数据表中并在回发时进行维护.哪个选项适合我viewstate(我使用过)或session.当我使用viewstate时,它将创建隐藏字段以存储它并减慢页面加载速度.因此,在将其存储在会话中时,是否存在任何开销(服务器端内存消耗和响应中的延迟).请建议我的解决方

解决方法

对于大量数据,Session更有效.如果您可以检测用户何时完成特定数据块,请将Session变量设置为null,以帮助释放内存开销.你不能总是这样做,但会话最终会过期,然后回收内​​存.降低会话超时可以帮助一些,但不要设置太小,你不想切断你的用户.需要在Web.config文件中启用会话.

以下是Session与ViewState的基本指南:

ViewState:ViewState的二进制数据结构是Base64编码放置到页面中,这意味着它是原始二进制数据大小的1.3333倍(8/6).为每个页面视图上载和下载此数据.因此,如果您在ViewState中有很多,它会影响页面响应时间. Base64编码可能已经过高度优化,因此不会影响性能.每个页面请求将分配,然后释放ViewState的空间,因此它不是长期内存命中.由于数据在页面中,因此不会过期.

会话:会话中的所有数据都在页面加载之间保留在Web服务器中.这使页面保持较小,只需携带会话标识符.在不利方面,用于在会话中存储数据的任何内存都会保持分配,直到会话到期为止.我想知道会话是复制二进制数据还是只保留一个指针.与Base64编码一样,这可以进行高度优化,因此如果发生这种情况,则不会影响性能.如果用户页面浏览之间等待太长时间,则会话可能会过期.如果会话到期,它应该将用户返回到网页中的某个已知状态.

这里的另一个问题是,如果您在会话中存储信息,则会话ID可以在客户端浏览器中的多个选项卡之间共享.您必须小心如何使用会话中存储的数据.请确保对此进行测试,以免您的用户获得意外结果.

(注意:使用ViewState是RESTful,Session不是.)

原文地址:https://www.jb51.cc/aspnet/247284.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐