MODx(0.961p2)で2,000ページぐらいのドキュメントを作成した。
sitemap.xmlをDiitoで作成したけど、処理が終わらない。
DiitoでSQLを発行するまでの時間がかかっているようだ。
Diitoを使用しないで、独自の処理を行う。
これでCeleron D 320(2.40GHz)(メモリ1G)で
1分30秒かかっていた処理が20秒くらいになった。

ページが4,000ページぐらいに増えた。
処理が20秒から30秒かかるようになった。
sitemap.xmlの容量は1Mバイトにも達していない。
これはおかしいと思いソースを調べた。
sitemap.xmlを作成はチャンクを使用している。
このチャンクにタグを使用していたのが悪さをしている。(下記はチェンクの一部)

<loc>[(site_url)]xxxxx</loc>

チャンクは4,000ページ分を作成してoutputに纏められる。
纏められた後に、4,000ある[(site_url)]を文字列に変換している。(多分ひとつひとつ)
さすがにメモリを使用しているとはいえ、バッフォーを取り直しているのだから数あれば遅くなる。
結局、チェンクにはタグを使わないようにプレイスホルダを設定した。
処理は30秒から8秒と高速に終了するようになった。
(現在のMODx(0.963)がこのへんの改善がされているのかわからない。)

又、telnet(port80)でGETしてsitemapのテストをしていた時に思ったこと。
sitemapのドキュメントのキャッシュ無効にしていたのにも関わらず、site_urlがキャッシュされるようだ。
テストした時の手順は以下
1.ドキュメントのキャッシュをクリアする。
2.telnetでGETする。HOSTをaaa.jpと指定する。site_urlにはhttp://aaa.jpが入る。
3.HOSTを指定しないでGET。site_urlがhttp://aaa.jpと出力。(キャッシュされっぱなし。)
内側からのテストだったので、外からはこのようにならないかもしれない。
用心のため、config.inc.phpにsite_urlを固定で設定してしまった。