【问题标题】:where should i put my dynamic menu creation logic to get good performance我应该把我的动态菜单创建逻辑放在哪里以获得良好的性能
【发布时间】:2012-03-02 19:30:59
【问题描述】:

我根据用户的权限和分配的模块创建了动态菜单,其中有循环和 if - else 语句。 此菜单创建在包含在所有页面中的 Header.ascx 中。

因此,菜单创建逻辑会在每次页面加载时执行。我想避免在每个页面上执行此操作。

任何改进我的实施的好建议。

注意:菜单是用户特定的。

【问题讨论】:

    标签: c# asp.net c#-4.0 asp.net-4.0


    【解决方案1】:

    如果代码已经在用户控件中,您可以使用 ASP.NET 用户控件缓存:

    http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx(链接不再有效)

    http://msdn.microsoft.com/en-us/library/h30h475z(v=vs.100).aspx(更新链接)

    【讨论】:

      【解决方案2】:

      为什么不将生成的菜单存储在会话中,并且仅在会话值不存在时才构建菜单?这会增加应用程序的内存消耗,但会提高运行时性能。

      【讨论】:

      • 我想避免使用会话,任何其他解决方案!你能告诉我其他创建菜单的方法吗?我也想避免循环和 if-else 条件。
      • @Kash,如果你不想使用会话,你应该在你的帖子中说出来。另外,构建菜单的循环和条件有什么问题?循环和条件是所有语言的基本组成部分,它们有问题。如果您认为可以改进,请发布一些代码。
      【解决方案3】:

      在我们的一些应用程序中,我们使用:

      • 一个会话(没有会话的应用,只有这个),将我们的控制菜单保存在内存中或;
      • 一个会话来保存您的数据,只需构建您的菜单,无需在每次回发时获取您的数据或;
      • 我们只是喜欢您并将其放在 Page_Load 上。

      这取决于您获取数据的方式以及这些数据的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-09
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        • 2017-04-19
        • 1970-01-01
        • 2020-09-30
        相关资源
        最近更新 更多