Как динамически внедрять логику типа «Совет дня» каждый день 24 часа в asp.net - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть таблица "Советы", которая имеет несколько строк. На домашней странице мне нужно отобразить случайный одиночный совет как «Совет дня». После 24 часов динамически я должен отображать случайный совет в течение еще 24 часов. Как реализовать эту концепцию?

см. Ссылку ниже для справки, которая отображает 4-5 кавычек каждый день. образец - нажмите здесь

Должен ли я создать новую таблицу, чтобы иметь "совет дня", где она удаляется и вставляется новая строка каждый день? Или реализовать метод кэширования на сервере.

Покажи мне лучший способ реализации. Приложение должно быть размещено в плане общего хостинга, поэтому нет возможности запустить службу Windows на сервере.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Вы можете, например, сгенерировать хэш SHA-1 текущей даты, а затем вычислить его остаток по модулю общего числа советов, который даст вам номер «Совет дня».

Например,

TipOfTheDay[] tips;

var now = DateTime.Now;
var buffer = new byte[] { (byte)(now.Year % 256), (byte)(now.Year / 256), (byte)now.Month, (byte)now.Day };
SHA1 encoder = new SHA1CryptoServiceProvider(); 
var hash = encoder.ComputeHash(data);
int tipNumber = 0;
for(var b in hash) {
    tipNumber += b;
    tipNumber %= tips.Count;
}
return tips[tipNumber];

Это будет возвращать вам новый (псевдослучайный) совет каждый день, и совет будет оставаться неизменным в течение дня.

0 голосов
/ 24 февраля 2012

Если вы используете Asp.Net MVC, вы можете использовать атрибут кеша вывода и установить продолжительность 24 часа.

[OutputCache(Duration=86400)]

для asp.net, вы можете добавить <%@ OutputCache duration="86400" varybyparam="None" %> в контрольном представлении

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