質問

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

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

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

更新

それは私が尋ねているデータベース設計ではなく、特定のページの完全なURLをどこに保存するかではなく、ユーザーが要求したページを取得するためにURL全体をトラバースする必要はありません(/ first-page /サブページ)

更新2

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

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

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

ありがとう

アンダース

役に立ちましたか?

解決

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

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

他のヒント

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

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

ソースはmvccms.codeplex.comです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top