ドメイン オブジェクトを生成するために解析する必要がある巨大な XML ドキュメントがあります。
ドキュメントは巨大であるため、ユーザーが要求するたびに解析したくありませんが、最初のみ、すべてのオブジェクトをキャッシュに保存します。
public List<Product> GetXMLProducts()
{
if (HttpRuntime.Cache.Get("ProductsXML") != null)
{
return (List<Product>)(HttpRuntime.Cache.Get("ProductsXML"));
}
string xmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\Products.xml");
XmlReader reader = XmlReader.Create(xmlPath);
XDocument doc = XDocument.Load(reader);
List<Product> productsList = new List<Product>();
// Parsing the products element
HttpRuntime.Cache.Insert("ProductsXML", productsList);
return productsList;
}
この関数をシングルトンで動作させ、スレッドセーフにする最善の方法は?
オブジェクトをキャッシュに保存する方法を修正しました (コピペミスでした)