我必须将数千个记录的数据存储在数据表中并在回发时保留。哪个选项适合我viewstate(我使用)或会话。当我使用viewstate时,它会创建隐藏字段来存储它并减慢页面加载速度。那么是否有任何开销(服务器端内存消耗和响应延迟)将其存储在会话中。请给我建议解决方案哪一个更好的性能视图状态或会话
回答
对于大量的数据,Session会更有效率。如果您可以检测用户何时完成特定数据块,请将Session变量设置为空,以帮助解决内存开销。你不能总是这样做,但会话最终会过期,然后内存将被回收。降低会话超时可以帮助某些人,但不要将其设置得太小,您不希望切断用户。会话需要在您的Web.config文件中启用。
下面是会话与视图状态的基本原则:
视图状态:ViewState中的二进制数据结构Base64编码被放置到该页面,这意味着它是1.3333倍(8/6)的尺寸的原始二进制数据。这些数据是为每个页面视图上传和下载的。所以如果你在ViewState中有很多它会影响页面响应时间。 Base64编码可能是高度优化的,所以这不是性能问题。每个页面请求将分配,然后释放ViewState的空间,所以它不是一个长期的内存命中。由于数据在页面中,因此不会过期。
会话:会话中的所有数据都保存在页面加载之间的Web服务器中。这使页面变小,它只需携带会话标识符。另一方面,用于在会话中存储数据的任何内存都将保持分配状态,直到会话过期。我想知道会话是复制二进制数据还是只保留一个指针。与Base64编码一样,这可以高度优化,所以如果发生这种情况,它不会影响性能。如果用户在页面查看之间等待时间过长,则会话可能会过期。如果会话过期,它应该将用户返回到网页中的某个已知状态。
这里还有一个问题,如果您要在会话中存储信息,会话ID可能会在客户端浏览器中的多个选项卡之间共享。您必须小心如何使用会话中存储的数据。确保你测试这个,这样你的用户不会得到意想不到的结果。
(注意:使用ViewState是RESTful,Session不是)。
如果我完全使用会话变量而不是viewstate会发生什么? –
Viewstate更耐用,因为它由用户的浏览器维护。因此,即使用户在页面上坐了一个小时,然后点击某个地方,页面仍然会保持视图状态,而Session可能已过期。诀窍是找到合适的平衡点。 – gmlobdell
是的,你是对的,但我想要的东西不同,在这两种情况下加载页面时所需的内存消耗和时间是多少 –
- 1. 在视图状态或会话中传递DataView会更好吗?
- 2. 哪一个更加costilier查看状态或会话?
- 3. PHP会话或cookie,哪个更好?
- 4. 哪一个有更好的性能?
- 5. ASP.NET会话状态的性能基准
- 6. XPath性能 - 哪个更好?
- 7. 哪一个会更好一个会员的网站,Joomla或Drupal
- 8. 视图状态或会话或数据库调用
- 9. 在性能方面哪一个更好的动态布局或XML布局
- 10. 监视ASP.NET会话状态
- 11. 哪一个性能更好:foreach()声明或Where()查询?
- 12. 禁用页面的视图状态对性能有好处?
- 13. 哪个具有更好的性能,Java或DB功能?
- 14. 哪一个更适合在视图状态下存储数据?
- 15. 哪一个更好(更多选择或更多的记录)的性能在MySQL?
- 16. AVAssetWriter多个会话和状态属性
- 17. 是否有可能在会话中放置视图状态?
- 18. 锯齿状阵列和展平阵列,哪个性能更好?
- 19. 静态调用与动态调用:哪一个具有更好的性能?
- 20. 会话状态反模式(或一般全局状态)
- 21. 哪个有更好的渲染性能,Stackpanel或Canvas + TranslateTransform? WPF/Silverlight
- 22. 哪一个会话保持最佳状态?
- 23. 根据性能,哪个代码更好?
- 24. SQL索引性能,哪个更好?
- 25. 在PHP中哪个性能更好?
- 26. 查询效率 - 哪个性能更好?
- 27. 哪给了我更好的性能Activerecord find_by或者哪里?
- 28. 绑定或视觉状态方法更适合性能?
- 29. 哪一个更好的FCM或GCM?
- 30. 在哪里存储会话状态?
您不应该在会话或视图状态下存储数千条记录。 –
什么是最佳实践然后 –
只提取页面上所需的数据。就像你使用数据表绑定网格一样。那么数据表应该只包含gridview当前页面上需要的那些数据。 –