У меня есть функция, вызываемая на каждой странице:
/// <summary>
/// Gets the date of the latest blog entry
/// </summary>
public static DateTime GetNewestBlogDate()
{
DateTime ReturnDate = DateTime.Now.AddDays(30);
using (var db = new DataClassesDataContext())
{
var q = (from d in db.tblBlogEntries orderby d.date descending select new {d.date}).FirstOrDefault();
if (q != null)
ReturnDate = q.date;
}
return ReturnDate;
}
Он работает так же, как этот веб-сайт, получает последнюю дату записи в блоге и, если он превышает значение cookie пользователя, рядом со ссылкой на блог отображается значок new
.
Кажется довольно расточительным продолжать вызывать эту функцию для каждого запроса страницы, называемого 1: 1, для количества запросов страниц, которые у вас есть. Допустим, у вас есть 30 000 просмотров страниц в день, это 1250 запросов к базе данных в час.
Можно ли как-нибудь кэшировать эти результаты, и у меня есть срок действия, скажем, каждый час?
Я знаю, что это немного микрооптимизация, но при наличии примерно 10 похожих функций на странице это может привести к чему-то стоящему. Вы можете перенести его в одну таблицу и вернуть их все за один раз, но я бы предпочел кэшировать, если это возможно, так как им легче управлять.