Нетривиальная задача на php

12
Анабой Янсур
На сайте с 12.04.2011
Offline
114
#11

Спасибо, но ни один способ меня пока не устраивает.

Объясню основные проблемы с работой любой CMS с SEF-ссылками которые хранятся в БД.

Существует несколько вариантов генерации ссылок:

1) При каждом обращении к сеф-функции делаем запрос к БД для получения из оригинальной ссылки ЧПУ-ссылку. Недостатки: большая нагрузка на БД.

2) Сначала все ЧПУ-ссылки выгружаются из БД в массив и уже работает на уровне массива. Плюс - гораздо быстрее чем первый вариант. Недостаток: съедает много памяти при большом количестве ссылок в БД + довольно тяжелый запрос. Хотя запрос можно и кешировать но памяти будет потреблять все равно много.

И третий вариант, который я пока нигде не встречал.

Сначала скрипт собирает все оригинальные ссылки, потом делает ОДИН запрос к базе данным вида

SELECT * FROM `sef` WHERE `orig` IN (много_ссылок) 
. Плюсы: небольшая нагрузка на БД не зависимо от количества ссылок в ней. Довольно низкое потребление памяти (нет нужды всю таблицу засовывать в память). Недостаток - необходимо постоянно парсить ссылки со страницы, что нивелирует возможность полного кеширование кусков страницы (модулей CMS).

Вот и хотелось бы чтоб все собиралось, обрабатывалось и отдавалось еще ДО окончательной генерации страницы но без ob_start.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий