【问题标题】:Is My ASP.NET Session Too Big?我的 ASP.NET 会话是否太大?
【发布时间】:2009-06-11 00:50:13
【问题描述】:

在我们的 .NET Web 应用程序中,每个登录用户都有一个大约 5-7 KB 的会话对象。会话存储一个 Dictionary 对象,其中包含几个类和用户的身份验证令牌。这个会话大小是否看起来太大了?我真的不知道什么是合适的尺寸或我应该在会话中遵循哪些好的做法。你们有什么想法吗?谢谢

【问题讨论】:

    标签: .net asp.net session


    【解决方案1】:

    只在会话中放入绝对必要的内容。否则,使用您在会话中存储的 ID 将其缓存或从其他地方检索它。如果它可以去其他地方,很可能是它需要去的地方,而不是你的会话对象内。

    【讨论】:

    • 我也会小心缓存。您可能会遇到与会话相同的问题。
    • 如何知道我的会话对象有多大?
    【解决方案2】:

    TheTXI 和 DevelopingChris 提供了最佳做法,但这里是您的头条问题的最终答案:只有您才能判断您的会话是否太大。如果您的 Web 服务器上的内存使用没有遇到问题(或者 Web 和状态服务器之间的流量,如果您使用的是外部状态服务器),那么您的会话没有存储太多;如果你是,那就是。

    最佳实践当然可以帮助您解决问题,并减少问题发生的机会,但如果您所拥有的没有被破坏,您最好将宝贵的开发精力花在部分代码上影响您的用户或您的可维护性。

    【讨论】:

      【解决方案3】:

      一般的行业标准是将其降低到尽可能低,缓存对象,并将 id 存储在会话中以便在下一次请求时检索它们。

      在一般的asp.net中,运行多框应用程序存在问题,必须将会话存储在数据库中,然后将其反序列化为对象。

      如果您最终采用这种方式,则必须为 xml 访问数据库然后对其进行反序列化,而不是访问记录本身。

      【讨论】:

        【解决方案4】:

        这将取决于您的可扩展性要求。 5-7K * 1000 个并发会话 = 57 MB。假设你有相当数量的 RAM,你应该没问题。也就是说,您应该非常小心会话中存储的内容,并避免存储非绝对必要的内容。

        【讨论】:

          【解决方案5】:

          如果你需要的话,不要。您应该单步执行它,看看您可以将哪些内容保存到缓存中或留在数据库中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-08-10
            • 1970-01-01
            • 2017-10-16
            • 2015-06-19
            • 1970-01-01
            • 2013-04-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多