0

私はcmsを作成していますが、特定のページの完全なURLを構造内のどこに保存するかについてはまだ解決していません。

すべてのページにはスラッグ (ページの URL フレンドリ名) があり、すべてのページには null 許容 (トップレベル ページの場合) の親と子があります。

特定のページの完全な URL (/first-page/sub-page) をどこに保存すればよいですか? これは、ページの他のプロパティと一緒にデータベースに入れる必要がありますか、それともキャッシュに入れる必要がありますか?

アップデート

私が求めているのはデータベース設計ではなく、特定のページへの完全な URL を格納する場所であるため、ユーザーが要求したページを取得するために URL 全体をトラバースする必要はありません (/first-page/sub-page )

更新 2

現在要求されている URL に属するページを見つける必要があります。要求された URL が /first-page/sub-page の場合、URL を分割してデータベースをループしたくありません (明らかに)。

単一のクエリ (WHERE url = '/first-page/sub-page') を実行できるように、テーブルに URL 全体を含めたいのですが、これは理想的ではないようです。親ページ?次に、すべての子孫の url-field も更新する必要があります。

他の人はこの問題をどのように解決しますか? 彼らはそれをデータベースに入れていますか?/first-page-/sub-page をページの ID にマップするキャッシュでは? それとも、要求された URL を分割してデータベースをループしていますか?

ありがとう

アンダース

4

2 に答える 2

0

Web サーバーは常に URL を検索する必要があるため、キャッシュに保存します。ページの URL が非常に急速に変化することが予想される場合を除き、キャッシュを使用すると、通常、データベース駆動型 Web サイトのボトルネックであるデータベースの負荷が大幅に軽減されます。

基本的に、URL をマップする辞書が必要です -> ページをレンダリングするために必要なものは何でも。多くの Web サーバーは、オペレーティング システムのファイル システムをディクショナリとして自動的に使用し、多くの場合、ファイル システム内のファイルの変更を認識できる組み込みのキャッシュを備えています。これはおそらく、CMS で記述できるものよりもはるかに効率的です。したがって、CMS で構造をファイル システムに直接実装し、ハード リンクまたはソフト リンクを使用して追加のマッピングを処理する方がよい場合があります。

于 2008-10-29T15:21:43.990 に答える
0

MvcCmsに対してこれを行いました。私は、コンテンツ カテゴリ/サブ カテゴリとコンテンツ ページのアイデアを採用しました。コンテンツ カテゴリ/サブカテゴリが作成されると、親を再帰的に調べてルート全体を構築し、それをカテゴリ テーブルに格納します。次に、ページが要求されると、正しいコンテンツ ページを見つけて、構築中の現在のナビゲーションが現在のルートまたはアクティブなルートであるかどうか、ナビゲーション構造をいつ通過するかを調べることができます。

このアプローチでは、カテゴリが編集されたときに何が起こるかについていくつかの規則が必要です。現時点でのアプローチは、サブカテゴリのフル パスが設定されると、後で通常のツールを使用して変更できないというものです。

ソースは mvccms.codeplex.com です

于 2009-08-11T19:50:29.327 に答える