Статичные страницы при больших объемах динамического контента

kompo

Guest
Статичные страницы при больших объемах динамического контента

Добрый день.

Возможно, это уже обсуждалось. Или обсуждалось, но не здесь =). Но мне все равно хочется попытать счастья. Мое скромное терзание php дошло до мысли, что каждый раз генерировать из базы контент - не самое лучшее решение. При небольших объемах (как информации, так и пользователей per second) можно и не выдумывать велосипед, но при их увеличении, наверное, умные люди придумали что-то еще...

В голове возникли 2 мысли:

1) каким-то образом использовать прокси. наверное, хитро настроенная прокся может помочь - но если у тебя не свой хостинг, то не поможет (сюда же можно отнести поставить мысли - поставить oracle и еще десяток процессоров)

2) генерировать из административной части чистый html, по которому ходит пользователь. проблема может встать при смене дизайна и, наверное, еще чего.

Хотелось бы узнать, как люди решают такие вещи.. Или никак не решают? Возможно есть какие-нибудь php классы или библиотеки, которые помогут найти ответ? Или еще что ;)


Прошу прощения, если все написанное здесь похоже на бред...
 

tony2001

TeaM PHPClub
smarty.php.net - кэширующий движок шаблонов.
терпеть его не могу, но он имхо может направить тебя на правильный путь.
 

Vinny

Guest
Исходя из того, что чтение контента происходит гораздо чаще чем его изменение, имеет смысл генерить его в html.
Я у себя на www.titles.ru и faq.saterenko.ru генерирую весь контент в html.
 

Demiurg

Guest
Помоему прикси и генерирование полностью статического контента тут не поможет. Даже если это будут лишь некоторые страницы, заменить их статикой в общем случае не возможно. На страницах могут быть скажем формачка, в которой человек вводит свой логин пароль на сайте, и ходит по нему (по сайту а не по логину), и его везде приветствуют.

У меня была идея реализации подобия шаблонов, со статическими html, которые генерировались по мере необходимости. Система получилась давольно сложная, но помоему охватывала все необходимые случаи.

Вообщем если кому то очень интересно, могу рассказать поподробнее.
 

Vinny

Guest
Есть задачи которые очень хорошо ложаться под генерацию в статику. В основном это инвормационные системы. Например, www.computerra.ru генерится в статику (по крайней мере так было раньше). Даже многие интерактивные системы можно переписать под статику. Например, те же форумы, чаты, гостевые. Но тут надо хорошо подумать и потестировать.
 

kompo

Guest
Автор оригинала: Vinny
Есть задачи которые очень хорошо ложаться под генерацию в статику. В основном это инвормационные системы. Например, www.computerra.ru генерится в статику (по крайней мере так было раньше). Даже многие интерактивные системы можно переписать под статику. Например, те же форумы, чаты, гостевые. Но тут надо хорошо подумать и потестировать.
кстати, url статьи, где у них все это было описано - не знаешь? я помню, когда они сайт перевели (кажется э
то было года полтора тому назад) - они разродились огромной статьей на эту тему, с картинками, схемами и подсчетами... так вот найти я ее не могу - хотя усиленно искал...
 

kompo

Guest
Автор оригинала: Demiurg
На страницах могут быть скажем формачка, в которой человек вводит свой логин пароль на сайте, и ходит по нему (по сайту а не по логину), и его везде приветствуют.
У меня была идея реализации подобия шаблонов, со статическими html....
Вообщем если кому то очень интересно, могу рассказать поподробнее.
С формочкой - понятно. Но если я реализую что-то типа gazeta.вру, то она мне по сути не нужна.

А по поводу шаблонов - очень интересно. Потому что вопрос меня мучает сильно... :) Так что если можно - то поподробнее :)
 

Demiurg

Guest
так надеялся, что никого это не заинтересет ... ну ладо :)

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

2. Шаблон представляет собой обычный html со вставками вида <block name = "myname" u1 u2 ... >, где myname - имя блока, по которому определяется тип блока(например, это может быть блок новостей, или меню, или реклама), "u1 u2" - это параметры от которых зависит данный блок. В данном случае он зависит от 2 параметров URl. Если текущий url страницы - http://www.mysite.com/url1/url2/url3/ , то функции, которая генерирует статический html для данного блока передадутся парметры u1 = 'url1' , u2 = 'url2'.

3. Имена блоков уникальны, соответственно функции, генерирующие статический html для данного блока должны находиться в разных файлах, эти файлы могут включаться по мере необходимости генерации html(include $blockfile;).

4. При генирации соответствующего статического html он(html ) записывается на диск с уникальным именем для данного блока с данными параметрам(в приведенном в пункте 2 примере уникальное имя может выглядеть как $DOCUMENT_ROOT/blocks.files/myname/url1_url2_file.html), таким образом, при дальнейших обращениях к этому же блоку с теме же параметрами, его html-код легко можно будет найти на диске и не генерировать занова.

5. Перед тем, как вызвать функцию генирации статического html системы вызывает функцию модификации параметров праетров для данного блока(уникальность функций даостигается таким же образом, как и уникальность функций генирации html). Эти функции могут вазвращать 4 вида ошибки( больше я не придумал :) ) 1 - параметры в порядке. 2 - параметры модифицированы, могут быть использованы дальше, 3 - Неверные параметря для блока(для каждого блока существует html-код , который показывается при обнаружении этой ошибки), 4 - неверные параметры(при этом страница считается 404ой, дальше ничего не обрабатывается)

Ну вот вообщем то основные идеи, знаю, что объясняю я не очень хорошо, так что уточняйте, что не понятно.
 

Semenov

Guest
Автор оригинала: Demiurg
У меня была идея реализации подобия шаблонов, со статическими html, которые генерировались по мере необходимости. Система получилась давольно сложная, но помоему охватывала все необходимые случаи.

Вообщем если кому то очень интересно, могу рассказать поподробнее.
А поподробнее об идее можно?
 

Tronyх

Новичок
smarty.php.net - кэширующий движок шаблонов.
ИМХО кэширование статики не дело шаблонизатора, максимум что он должен делать это компиляция шаблонов.

Вот ссылка по теме: http://www.xpoint.ru/cgi-bin/forum.cgi?action=thread&id=15496
 

Gas

может по одной?
to tony2001.

чем конкретно тебе не нравится smarty.php.net, а то вот собирался сам его попробовать и хотелось бы знать мнение человека знающего?
 

tony2001

TeaM PHPClub
раздражает он меня.
универсальный набор отвертка-молоток-гаечный ключ-....-автомобиль-вертолет-ракета
все-в-одном.
но 90% из функциональности ты будешь использовать 1 раз в жизни.
 

Tronyх

Новичок
to Gas
Он наворочен множеством не нужных функций, хоть Smarty и построен по модульному типу, большинство этих функций интегрировано в его ядро, из-за чего иногда наблюдается ситуация когда генерация контента занимает меньше времени чем его вывод на экран.
 

su1d

Старожил PHPClubа
раз уж о шаблонах разговор зашёл, не могу не вставить свои пять копеек =)

Автор оригинала: Tronyх
...генерация контента занимает меньше времени чем его вывод на экран.
а кто-нибудь смотрел на файлы в кэше Смарти? когда один динамический блок превращается в кучу кода (около 2Кб) с массивами и объектами. ведь это же всё парсить надо бедному РНР.

попробуй php_templates. делалось как раз для того, чтобы временем вывода на экран можно было вообще пренебречь.
 

Gas

может по одной?
Спасибо всем.
Да, действительно слишком уж smarty громоздкий.

su1d буду бороть твой движок
 
Сверху