Оптимальный способ кэширования описания времени суток - PullRequest
2 голосов
/ 30 марта 2011

Каков наилучший способ кэширования следующего?Я создаю шаблон веб-приложения для интрасети, в котором будет отображаться сообщение, например Доброе утро, Джастин Сатир! в верхней части заголовка главной страницы.Очевидно, мне придется определить, показывать ли Утро , Днем или Вечером .Для ясности мой код приведен ниже:

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 ]

8 голосов
/ 30 марта 2011

Я бы просто оставил имя пользователя в объекте Session, если честно, остальное не стоит кэшировать и проверять, устарело ли оно и т. Д., Просто перезапустите его на каждой странице - при условии, что вы поместите реализацию в общуюбиблиотека / класс, чтобы вы сохранили свой код СУХОЙ.

4 голосов
/ 30 марта 2011

По моему мнению, абсолютно нет необходимости кэшировать часть дня. Информация о пользователе может быть доступна в сеансе.

0 голосов
/ 15 февраля 2015

Старый, я знаю, но я не кеширую свой, из-за очевидной причины, по которой время пользователя может меняться во время сеанса.Я сохраняю их расчетное время в своем сеансе (рассчитывает на основе их часового пояса), а затем использую этот код вверху всех страниц:

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

У меня хорошо работает!

0 голосов
/ 30 марта 2011

Если вы говорите в контексте ASP.NET MVC, вы можете использовать System.Web.Helpers пространство имен, где вы можете найти помощника WebCache. Затем вам нужно рассчитать минуты, чтобы изменить время суток и вызвать WebCache.Set метод с параметрами: значение = "ваша строка", minutesToCache = рассчитанное_значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...