asp.net - 存储常用值的最佳方式

标签 asp.net optimization

在我的 Webforms 3.5 应用程序中,我有一个显示用户上次登录时间的 GridView。该值以 UTC 格式存储在 Users 表中。当管理员查看网格时,我希望他们查看管理员在他们的首选项中选择的时区(也存储在用户表中)。

我已经为 GridView 正常工作了:

<ItemTemplate>
    <%# TimeZoneInfo.ConvertTimeFromUtc(Eval("LastLoginDateTimeUTC"), TimeZoneInfo.FindSystemTimeZoneById(UserService.GetUser(HttpContext.Current.User.Identity.Name).DisplayTimeZone))%>
</ItemTemplate>

所以在这种情况下,每次创建一行时,都会创建一个用户对象。

我想做的是确定处理返回常用用户特定数据(例如 user.DisplayTimeZone)的最佳方式。我有几个想法,但我想了解其他人是如何做的。我一直在考虑使用用户特定缓存,但在我有更多想法之前不想实现。

我想避免使用 Session 对象,但这不是必需的。我更愿意使用 HttpRuntime.Cache。

此外,一旦确定了这一点,代码应该放在哪里?在 BasePage 类中?在母版页?在 MVP BasePresenter 中?

谢谢 ~S

最佳答案

我已经使用您提到的用户特定缓存完成了相同的操作。我实际上是在一个单独的命名空间中实现它的,尽管它是静态获取属性。例如:

namespace MyWeb.Session
  public static class CurrentUser {
    public static int DisplayTimeZone {
      get {
        // Check cache first.
        ...

        // Cache miss, load from database and store in cache.
        ...
      }
    }
  }
}

这样,每次我需要该值时,我只需调用 MyWeb.Session.CurrentUser.DisplayTimeZone

关于asp.net - 存储常用值的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433345/

相关文章:

c# - 如何使用 javascript 与 asp.net viewstate

允许多个网站(不仅仅是应用程序)的 ASP.NET 共享托管提供商?

jquery - 在 .NET MVC4 中使用 Ajax 进行部分 View 加载

c++ - 抽象类中 protected 成员变量?

c - 如何优化 C for 循环?

asp.net - Razor 3 有什么新功能?

java - 在枚举类型上实现 `next` 和 `previous` 的最佳方法是什么?

mysql - 为什么索引使用取决于列类型

python - 具有 L-BFGS-B 方法 maxiter 属性的 scipy.optimize.minimize 函数不起作用

asp.net - 在asp.net中设置ClientID