guid to nginx internals
    Denis F. Latypoff 
    denis at gostats.ru
       
    Fri May  4 17:43:44 MSD 2007
    
    
  
Hello Mykola,
Friday, May 4, 2007, 8:18:26 PM, you wrote:
> Начало цитаты:
>     if (m[1] == 'O') {
>         if (m[0] == 'P' && m[2] == 'S' && m[3] == 'T') {
>             r->method = NGX_HTTP_POST;
>             break;
>         }
>         if (m[0] == 'C' && m[2] == 'P' && m[3] == 'Y') {
>             r->method = NGX_HTTP_COPY;
>             break;
>         }
>     ...
> That's a man who cares about performance. 
> Конец цитаты.
> Я не спец в C, и не читал той дискуссии по strncmp, но по моему
> проверять 2-й байт, а потом 1-й - не самый оптимальный шаблон доступа к
> памяти
> Мне кажется что лучше проверять так, хотя могу и ошибаться:
> #define  STR4_GET  0x00544547
> #define  STR4_POST 0x54534f50
> uint32_t tmp4;
> tmp4 = *(uint32_t*)m;
> switch(tmp4) {
> // методы следуют в порядке падения популярности, первым разумеется GET
>   case STR4_GET:
>     r->method = NGX_HTTP_GET;
>     break;
>   case STR4_POST:
> //  if(m[5] == 0)       // необязательно, но чтобы исключить
> // неправильный метод как POSTME
>     r->method = NGX_HTTP_POST;
>     break;
> ..........
> }
Так сделано в 0W-httpd ;)
> On Mon, 30 Apr 2007 16:02:02 +0400
> Igor Sysoev <is at rambler-co.ru> wrote:
>> Отличное на мой взгляд описание внутреннего устройства:
>> http://www.riceonfire.org/emiller/nginx-modules-guide.html
>> 
>> 
>> -- 
>> Igor Sysoev
>> http://sysoev.ru/en/
>> 
> __________ NOD32 2238 (20070503) Information __________
> This message was checked by NOD32 antivirus system.
>   part000.txt - is OK
> http://www.eset.com
-- 
Best regards,
 Denis                            mailto:denis at gostats.ru
    
    
More information about the nginx-ru
mailing list