缓存时间描述的最佳方式

时间:2011-03-30 19:22:12

标签: c# asp.net caching time

缓存以下内容的最佳方法是什么?我正在创建一个Intranet Web应用程序模板,该模板将显示消息,例如, Good Morning,Justin Satyr!靠近我的母版页头顶部。显然,我必须确定是否显示早晨下午晚上。为清楚起见,我的代码如下:

string partOfDay;
var hours = DateTime.Now.Hour;
if (hours > 16)
{
    partOfDay = "evening";
}
else if (hours > 11)
{
    partOfDay = "afternoon";
}
else
{
    partOfDay = "morning";
}

我不想在每个页面加载时重新确定这一点,因为这看起来有点冗余,因为我必须轮询SQL服务器以检索用户的全名。缓存此信息的最佳方法是什么?如果我按照会话的长度缓存它,那么如果用户在上午11:00开始使用该应用程序并在下午3:00结束,它仍然会说早安

最好的办法是简单地重新确定每个页面加载的M / A / E字,并缓存该人的会话全名吗?或者有更好的方法吗?

4 个答案:

答案 0 :(得分:8)

我只是将用户名保留在Session对象中,其余的老实说不值得缓存并检查它是否已过时等,只需在每个页面上重新运行它 - 只要你将实现放到一个共同的地方库/类让你的代码保持干净。

答案 1 :(得分:4)

在我看来,绝对没有必要缓存一天中的部分内容。用户信息可以在会话中使用。

答案 2 :(得分:0)

如果您正在使用ASP.NET MVC上下文,则可以使用 System.Web.Helpers 命名空间,您可以在其中找到WebCache帮助程序。比你需要计算分钟到day_time的时间将被更改,并使用参数调用 WebCache.Set 方法:value =“your string”,minutesToCache = calculated_value。

答案 3 :(得分:0)

旧的,我知道,但由于显而易见的原因,用户的时间可能在会话期间发生变化,因此我不会缓存我的。我将他们计算的时间存储在我的会话中(根据他们的时区计算),然后在所有页面的顶部使用此代码:

<strong>@string.Format("Good {0}, ", SessionManager.GetUserCurrentDate().Hour > 16 ? "Evening" : SessionManager.GetUserCurrentDate().Hour > 11 ? "Afternoon" : "Morning") + SessionManager.GetDisplayName())</strong>

适合我!