![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Этот вопрос больше относится к архитектурной тематике, но поскольку такого форума нет, я все буду писать на PHP, то задаю вопрос здесь.
Задача: Создать механизм структуры сайта Возьмем самый простой случай. Положим у вас есть книга, в ней есть главы (1, 2, ... N), подразделы(1.1, 1.2, ... 1.n, 2.1, 2.2, 2.m, ... k.h) короче иерархия. Нужно из этой книги сделать сайт. Сразу приходит на ум XML, можно было бы даже без программирования на PHP обойтись, но я не хочу использовать XML, потому что не хочу парсить весь XML документ каждый раз когда пользователь щелкает по подразделу в содержании (если моя точка зрения не ясна сразу говорите). Почему пришлось бы парсить весь XML? Потому если я не ошибаюсь PHP не умеет держать в памяти распарсенную модель DOM, если ошибаюсь поправьте меня. В общем я хочу придумать такой механизм, который бы с минимальным набором вычислений, по заданному идентификатору выдавал текст главы или подраздела. Думаю сейчас в направлении автогенерации, например, задать структура сайта в XML, и банально сгенерировать из него HTML странички (кто программировал на java вспомните как работает javadoc) Еще одно условие содержание каждой страницы в моей задаче статично, то есть на них нет каких то супер навороченный Ajax компонент и т.п. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: нет Всего: 89 |
Почему бы просто не использовать БД? Это и проще и быстрее: всего две таблицы (разделы и главы), всего два запроса (получение разделов и глав).
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Базу не хочется использовать потому что все содержание статическое. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Royan, раз сайт полностью статический, то к чему все эти сложности? Создайте иерархию разделов из директорий и html страничек.
|
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 2 Всего: 67 |
Royan, ну и как гибридное решение -- струкрутра в xml, при первом запуске и при изменении скрипт генерит html структуру.
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
Royan |
|
||||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
А чем этот подход отличается от того что я написал вначале?
Это хороший вопрос, именно сложностей я и пытаюсь избежать. Тело в том, что просто создать HTML файлы никуда не годиться, а что если мне придется делать еще один аналогичный сайт? Или, например, исправить название главы, тогда мне придется править и содержание и непосредственно название (это самый простой случай). Короче хочется найти изящное, универсальное решение как раз для такого случая. Подохода пока два 1) Использовать БД - две таблицы в одной названия глав, в другой их содержание 2) Использовать какой-то структурированный файл (например XML), содержащий исчерпывающую информацию, из которого автоматически сгенерировать html странички, содержание и вообще что угодно. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
||||
|
|||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Royan, не обязательно это должны быть html файлы, могут быть и php скрипты с инклюдами.
Или даже еще проще - используйте любой подход (или даже любую cms) совместно с reverse proxy. Т.е. прокси будет принудительно кешировать все GET запросы на длительное время, по производительности - это будет даже лучше, чем статические html файлы. |
|||
|
||||
Glip |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 473 Регистрация: 30.12.2006 Репутация: нет Всего: 18 |
а что если никогда больше не придется? а что если в следующем проекте вам потребуется и ajax и распределение нагрузки и прочее? решайте задачи по мере их возникновения. прогнозирование - вещь хорошая, но злоупотреблять им тоже не стоит ![]() Добавлено через 35 секунд +1 за БД или перегенерацию XML |
|||
|
||||
destrd |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 1.10.2008 Репутация: нет Всего: 4 |
Нет так много вариантов то. Все уже предложили. Если БД не хотите, то таже xml'ка будет выступать в роли базы, по номеру раздела находим содержимое раздела.
Ещё предложили вам хранить в каталогах, но можно хранить не html-файлы, а просто текст. По номеру раздела подраздела находите каталог, ищите в нём файл, а название файла - название раздела. Ну можно ещё что-нибудь извращённое придумать:) Например, хранить смещение до начала главы или подраздела, и её размер. И использовать только один файл. Это сообщение отредактировал(а) destrd - 6.10.2008, 21:27 --------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems. -- Jamie Zawinski in comp.lang.emacs |
|||
|
||||
Boxa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 25.10.2006 Репутация: -2 Всего: -2 |
1 таблица в mysql... смысла нет никакого парсить весь файл каждый раз + мало ли понадобится поиск или еще чего.
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |