クエリ文字列を介して渡された条件に応じて、その場で XML フィードを作成する Web アプリケーションがあります。
これは非常に単純なアプリケーションです。クエリ文字列変数を読み取り、それらを使用してデータ (データベースからキャッシュされたデータ) を適切な XML 形式にフォーマットします。
返された XML ファイルは約 25 MB です...大量のデータがあります。
私は XmlTextWriter を使用して XML を構築し、それを「アプリケーション/オクテット ストリーム」としてリクエスタに返します。これはダウンロード可能な添付ファイルです。
質問: XML のビルドで CPU を 100% 使用しているようで、他のアプリケーションで問題が発生しています。
このような大きな XML ファイルを作成した経験のある人はいますか? プロセスの CPU 負荷を軽減するためのヒントはありますか?
コードサンプルは次のとおりです。
map.WriteRaw("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
map.WriteStartElement("rss");
map.WriteAttributeString("version", "2.0");
map.WriteAttributeString("xmlns:g", "http://base.google.com/ns/1.0");
map.WriteStartElement("channel");
map.WriteElementString("link", "http://www.mywebsite.com...");
ProductCollection items = Product.GetCachedSiteProducts();
foreach (Product p in items)
{
map.WriteStartElement("item");
........
map.WriteElementString("description", p.Description);
map.WriteElementString("g:id", p.SiteSku);
map.WriteElementString("g:condition", "new");
map.WriteElementString("g:price", p.Price.ToString() + " USD");
...............
map.WriteEndElement(); //item
}
}
map.WriteEndElement();//channel
map.WriteEndElement();//rss
Response.Write(sw.ToString());
更新:私は自分の質問に答えています..より多くのコードを投稿するように頼んだ人たちのおかげで、これはもっと注意深く見たときに簡単なものでした.
コードは「Response.write(map.ToString())」を使用して xml を出力していました。うーん、非効率です。コードを更新します。皆さんありがとう!