Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re[2]: nginx-0.7.59
ИМХО,
По моим наблюдениям тенденции развития сайтостроения свидетельствуют о том,
что статичные сайты становятся всё менее и менее интересны.
Статичный сайт в моём понимании - это сайт, большинство страниц которого
можно полностью закэшировать, соответственно обновляя страницу пользователь
постоянно видит одну и ту же страницу, взятую из кэша, без каких либо
изменений, что, согласитесь, скучно..
Большинство современных сайтов (опять же по моим наблюдениям) - это
динамичные сайты, т.е. на таком сайте показывается, авторизован пользователь
или нет, есть некая ротация блоков или контента внутри блоков и т.п.
Я думаю, что SSI в nginx с возможностью подзапросов идеально подходит на
роль "шаблонизатора второго уровня", т.е. может производить определенные (не
большие, но всё же вполне достаточные) действия для придания закэшированной
странице некоторой динамики.
А для того, чтобы быть "шаблонизатором второго уровня" по моему мнению
достаточно нескольких простейших функций:
1. Выполнение подзапросов к бэкенду
2. Простейший анализ результатов запроса
- проверка переменных (с помощью операций =, !=, >, <, >= и <=)
- вложенные условия
- циклы (опционально)
Про вложенные условия хочу пояснить на примере, который достаточно часто
встречается в реальной жизни:
<!--# include virtual="/get_user_info" wait="yes" -->
<!--# if expr="$User_is_auth = 1" -->
...auth user part1 of html code...
<!--# if expr="$User_is_moder = 1" -->
...moder part of html code...
<!--# endif -->
...auth user part2 of html code...
<!--# else -->
...not auth user part of html code...
<!--# endif -->
Без вложенного условия пришлось бы переписывать так:
<!--# include virtual="/get_user_info" wait="yes" -->
<!--# if expr="$User_is_auth = 1" -->
<!--# set var="User_auth_and_moder" value="1" -->
<!--# else -->
<!--# set var="User_auth_and_moder" value="0" -->
<!--# endif -->
<!--# if expr="$User_is_moder = 1" -->
<!--# set var="User_auth_and_moder" value="${User_auth_and_moder}1" -->
<!--# else -->
<!--# set var="User_auth_and_moder" value="${User_auth_and_moder}0" -->
<!--# endif -->
<!--# if expr="$User_auth_and_moder = 11" -->
...auth user part1 of html code...
...moder part of html code...
...auth user part2 of html code...
<!--# elif expr="$User_auth_and_moder = 10" -->
...auth user part1 of html code...
...auth user part2 of html code...
<!--# else -->
...not auth user part of html code...
<!--# endif -->
что заметно ухудшает наглядность и читаемость кода, и, что самое главное,
ухудшает поддерживаемость кода из-за дублирования частей
Без кэширования, если все операции производить апачем - нужна ферма
серверов.
----- Original Message -----
From: "Kirill A. Korinskiy" <catap+nginx@xxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
Sent: Tuesday, May 26, 2009 1:49 PM
Subject: Re: Re[2]: nginx-0.7.59
ИМХО, вы путаете nginx и что-то более сложное, например apache.
--
wbr, Kirill
|