Где хранить полный URL в CMS? - PullRequest
0 голосов
/ 29 октября 2008

Я создаю cms и еще не решил, где хранить полный URL для данной страницы в структуре.

У каждой страницы есть слаг (понятное для URL имя страницы), и у каждой страницы есть обнуляемый (для страниц верхнего уровня) родитель и потомок.

Где мне хранить полный URL-адрес (/ первая страница / дополнительная страница) для данной страницы? Должно ли это быть в базе данных вместе с другими свойствами страницы или в каком-либо кэше?

Обновление

Я спрашиваю не о дизайне базы данных, а о том, где хранить полный URL-адрес данной страницы, поэтому мне не нужно просматривать весь URL-адрес, чтобы получить страницу, которую запросил пользователь (/ first-page / дополнительная страница)

Обновление 2

Мне нужно выяснить, какая страница принадлежит запрашиваемой в настоящий момент ссылке. Если запрошенный URL-адрес / first-page / sub-page, я не хочу разбивать URL-адрес и проходить по базе данных (очевидно).

Я бы предпочел иметь весь URL в таблице, чтобы я мог просто выполнить один запрос (WHERE url = '/ first-page / sub-page'), но это не кажется идеальным, что если я изменю слизняк для родительской страницы? Затем мне также нужно обновить поле URL для всех потомков.

Как другие люди решают эту проблему? Они помещают это в базу данных? В кеше, который отображает / first-page- / sub-page на идентификатор страницы? Или они разделяют запрошенный URL и зацикливают базу данных?

Спасибо

Anders

Ответы [ 2 ]

0 голосов
/ 11 августа 2009

Я только что сделал это для MvcCms . Я пошел с идеей категорий контента / подкатегорий и страниц контента. Когда создается категория / подкатегория контента, я рекурсивно просматриваю родителей и строю весь маршрут, а затем сохраняю его в таблице категорий. Затем, когда запрашивается страница, я могу найти правильную страницу содержимого и при просмотре структуры навигации узнать, является ли текущая создаваемая навигация текущим или активным маршрутом.

Этот подход требует некоторых правил о том, что происходит при редактировании категории. Подход прямо сейчас заключается в том, что как только полный путь задан для подкатегории, его нельзя изменить позже обычными инструментами.

Источник: mvccms.codeplex.com

0 голосов
/ 29 октября 2008

Храните его в кеше, потому что веб-серверам необходимо постоянно искать URL-адреса. Если вы не ожидаете, что URL-адреса страниц изменятся очень быстро, кэширование значительно снизит нагрузку на базу данных, которая обычно является вашим узким местом на веб-сайтах, управляемых базой данных.

По сути, вам нужен словарь, который отображает URL -> все, что вам нужно для отображения страницы. Многие веб-серверы будут автоматически использовать файловую систему операционной системы в качестве словаря и часто будут иметь встроенный кэш, который может распознавать изменения файла в файловой системе. Это, вероятно, будет гораздо более эффективным, чем все, что вы можете написать в вашей CMS. Поэтому может быть лучше, чтобы ваша CMS внедрила структуру непосредственно в файловой системе и обрабатывала дополнительные сопоставления с помощью жестких или программных ссылок.

...