Quote from: soushi at Feb 11, 2009, 10:00 AM
MODxのサイト全体の情報を保存しているキャッシュと、ドキュメントごとの情報を保存しているキャッシュです。
フレンドリーURLが保存されているのはMODxのサイト全体の情報を保存しているキャッシュになります。
(/assets/cache/siteCache.idx.phpという名前のファイルです)
完全に理解できました・・・(つもり)
Quote from: soushi at Feb 11, 2009, 05:46 AM
MODxの仕様上、フレンドリーURLはキャッシュファイルに保存されていてページにアクセスした際、最初に読み込まれます。
つまりその後に追加されたドキュメントのフレンドリーURLは(当然キャッシュにはないので)読み込まれていないため、makeURL()を使っても「ドキュメントID.html」しか返してくれません。
「&clearcache=`1`」オプションを付けていても、その「次のアクセス」から新しいキャッシュを使うのでやっぱり期待通りに動いてくれません。
それではなぜ、という気持ちで $modx->sendForward($postid); の処理を追ってみました。
↑ これが最初にするべきことだったんですが「時間差」が最初に頭にあったので時間をかけずに自分を納得させる方向で終わってしまったようです。
最終的に sendForward の中で url を組み立てていたんですね。
sendForward → prepareResponse → rewriteUrls と進み最終的に sendRedirect が呼ばれているところまで理解できました。
document.parser.class.inc.php を理解することはかなり重要な事のようです。
ほんのわずかな時間差で sendForward が動いているのかなと思っていたもので大変失礼しました。
siteCache.idx.php の役割がわかっていなかったので適当に納得しようとしていたようです。
8) →自分の理解できる範囲で色眼鏡で周りを見ているようなものですね。