nginx-0.7.59

Dmitry Dedukhin dedukhin at mail.ru
Tue May 26 14:03:18 MSD 2009


ИМХО,

По моим наблюдениям тенденции развития сайтостроения свидетельствуют о том, 
что статичные сайты становятся всё менее и менее интересны.
Статичный сайт в моём понимании - это сайт, большинство страниц которого 
можно полностью закэшировать, соответственно обновляя страницу пользователь 
постоянно видит одну и ту же страницу, взятую из кэша, без каких либо 
изменений, что, согласитесь, скучно..
Большинство современных сайтов (опять же по моим наблюдениям) - это 
динамичные сайты, т.е. на таком сайте показывается, авторизован пользователь 
или нет, есть некая ротация блоков или контента внутри блоков и т.п.
Я думаю, что 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 at catap.ru>
To: <nginx-ru at sysoev.ru>
Sent: Tuesday, May 26, 2009 1:49 PM
Subject: Re: Re[2]: nginx-0.7.59


> ИМХО, вы путаете nginx и что-то более сложное, например apache.
>
> -- 
> wbr, Kirill
> 






More information about the nginx-ru mailing list