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不是.)

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....