Как обновить xml-кэш через один день с даты последнего изменения? - PullRequest
1 голос
/ 06 февраля 2009

Я занимаюсь разработкой веб-приложения с использованием ASP.NET 2.0 (C #), где на домашней странице я отображаю недавно добавленные записи. Частота добавления записей составляет около 1-5 записей в день, поэтому я решил не сильно загружать сервер sql, каждый раз получая последние записи с сервера db.

Итак, чтобы сделать данные кэшированными, я использовал файлы XML, я сгенерировал файл XML из набора данных (функция ds.WriteXML в .NET), а теперь, скажем, сегодня (10 января 2008 г. 12:30:00) я создали файл Recent-cache.xml. Итак, последний файл кэша действителен в течение одного дня.

Тогда, если разница между текущей датой и датой последнего изменения больше или равна 1 дню, необходимо снова создать файл кэша xml с новыми данными с сервера базы данных.

Итак, мне нужен код, с помощью которого я могу получить дату последнего изменения файла xml и затем найти разницу между датами (текущей и последней даты изменения файла).

А также, пожалуйста, скажите мне, что я считаю лучшим решением, или мы можем сделать что-нибудь еще, какую-нибудь другую простую и быструю технику.

Спасибо

1 Ответ

1 голос
/ 06 февраля 2009

Возможно, вы захотите использовать API-интерфейс кэша ASP.NET, который существует для выполнения той работы, которую вы описываете. Вы можете добавить любой объект (например, XmlDocument или DataSet) в коллекцию Cache и указать, как долго вы хотите, чтобы он находился там, например:

Cache.Insert("MyCacheKey", myObjectToCache, null, DateTime.Now.AddDays(1), null);

Тогда вы можете получить кешированные данные с помощью функции, подобной этой:

const string CACHE_KEY = "MyCacheKey";

private DataSet RecentlyAdded()
{
    if(Cache[CACHE_KEY] == null)
        Cache.Insert(CACHE_KEY, GetRecentlyAddedFromDatabase(), null, DateTime.Now.AddDays(1), null);
    return Cache[CACHE_KEY];
}

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

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

edit: изменен ключ кэша на строковую константу, поэтому его нужно указывать только один раз.

...