Тест web фреймворков

Oleg Alistratov ali at ali.org.ua
Tue Jun 14 08:41:21 PDT 2011




> У меня есть встречное предложение, щаз попробую его сформулировать.

Вот что меня интересовало, с точки зрения HP фреймворков.

Какую подготовительную работу проводит фреймоворк, прежде чем отдать
управление в пользовательский хандлер? что делает сразу, а что умеет 
отложить?

Пример: у хандлера обычно уже есть доступ ко всем HTTP-заголовкам,
разложенным в массив, хеш или Env. Единственный интерфейс, который
позволяет без нужды _не_ парсить заголовки из потока — это mod_perl.

А ведь ситуацию, когда заголовки не нужны, представить не сложно.
Скажем, мы хотим всегда редиректить с http:// на https://,
поэтому, если в потоке не встречается строка HTTPS,
мы ставим редирект, не делая больше ничего (скажем, не принимаем тело 
запроса). Или еще нагляднее: если первыми символами в запросе
идут HTTP/0.9, сразу все бросить и вернуть 505.

Ну а обычно фреймворк уже разобрал заголовки, распарсил куки,
если тело multipart - разложил его, сука, по файлам даже, хотя
его не просили :)

Итак, вопрос вот в чем: в каком фреймворке какие данные доступны
lazy образом? могу ли я получить protocol_version() без того, чтобы
к моменту вызова еще не были распарсены заголовки? Уверен ли я в том,
что могу сделать отлуп по куке до того, как фреймоворк распатронит
query?

Скорее всего да, но сравнить фреймворки на предмет lazy вычислений
мне хотелось. Это, собственно, и половина ответа, почему одни пошустрее
могут быть, а другие нет.

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

Я попробовал себя убедить, что держать логику такого рода редиректов, 
рерайтов и возвратов гораздо удобней внутри приложения (ну наглядней, и 
редактировать легче), но не убедил :)

Так что вопрос исключительно академический, хотя если есть интерес —
можно попробовать разобраться.



-- 
Али



More information about the Kiev-pm mailing list