このリストは、ASP.NETのWebコンポーネントであるTreeViewを使っていますが、ページが最初に読み込まれる際に、データベースから動的に構築するということを行っていました。花の種類が増えてくるに従い、この処理が重くなってきており、サーバの状況によっては数十秒も待たされることがありました。さすがに、これでは見る気が起きませんよね。
このための布石が、昨日の記事だったのですね。この記事で、テーブルが最後に変更された日時を取得する方法は確立しました。するとあとは、この日時情報を何に使うか、というわけです。今回採用したのは、メニューをXMLファイルで作成しておき、TreeViewコントロールにバインドするというものです。XMLファイルからのバインドは、データベースから動的に生成するよりもはるかに高速です。
XMLファイルを更新するタイミングは、ファイルの最終更新日時より、データベースの更新日時の方が新しいときです。これで、データベースの最終更新日時をうまく利用することができましたね。こんなコードを書いておけばOKです。
ルート要素の下に子要素をぶら下げます。XmlElementメソッドで作るのは一緒です。違うのは、属性を1個作成して、子要素に指定している点です。属性の作成はCreateAttributeメソッドで行い、子要素のAttributesコレクションに加えます。
こんな感じで、ツリーを作っていけば終わるのですが、階層が深くなったり、属性が多くなってくると、冗長で複雑なコードになってきますので、オブジェクト名など、間違えないようにしましょう。