#c# #caching
#c# #кэширование
Вопрос:
Я запрашиваю данные из веб-службы и получаю XML-файл.Хорошей идеей было бы кэшировать / хранить xml, чтобы при повторном запуске приложения он использовал этот кэшированный xml. Данные в полученном xml будут меняться каждые 24 часа, поэтому по истечении этого времени приложение со старым запросом все равно должно создать новое.
Что было бы лучшим решением для хранения этих данных?
РЕДАКТИРОВАТЬ: может быть, использовать SQLite для хранения некоторой истории?
Комментарии:
1. Вопрос не в том, что я пробовал. Вопрос заключается в том, чтобы получить некоторые идеи, что было бы хорошим способом сделать это!
Ответ №1:
Вы можете просто передать его в файл:
/// saving it :
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
System.IO.File.WriteAllText(filename, doc.Value);
/// loading it back in :
System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
xdoc.LoadXml(System.IO.File.ReadAllText(filename));
Комментарии:
1. Да, это, вероятно, наиболее распространенное решение, но, возможно, есть и лучшие .. (:
2. Я думаю, вам нужно уточнить свой вопрос. Есть несколько способов сделать это, но «лучший» зависит от ваших требований. Что для вас наиболее важно в вашем сценарии?
Ответ №2:
Если я вас правильно понимаю, вы можете рассмотреть возможность загрузки данных в XmlDocument
or XDocument
и сохранения их в кэше с помощью CacheDependency
:
XmlDocument xDoc = new XmlDocument();
if (Cache.Get("MenuData") == null)
{
xDoc.Load(Server.MapPath("/MenuData.xml"));
Cache.Insert("SiteNav", xDoc, new CacheDependency(Server.MapPath("/MenuData.xml")));
}
else
{
xDoc = (XmlDocument)HttpContext.Current.Cache.Get("MenuData");
}
Комментарии:
1. Хотя это хорошее решение, оно не будет сохраняться между перезапусками приложения.