location ~ \.php$

Igor Sysoev is at rambler-co.ru
Thu Oct 18 15:23:19 MSD 2007


On Thu, Oct 18, 2007 at 01:57:05PM +0300, Gena Makhomed wrote:

> Здравствуйте, Igor!
> 
> Wednesday, October 17, 2007, 6:09:14 PM, Maxim Dounin wrote:
> 
> MD> Совсем правильный ответ - перепроектировать систему так,
> MD> чтобы location'ы с регулярными выражениями в конфиге отсутствовали.
> 
> потому что сопоставление запроса и регулярного выражения в location ~ \.php$
> занимает слишком много ресурсов процессора, или почему такая рекомендация?
> 
> если это действительно так, тогда может быть имеет смысл внутри nginx
> регулярные выражения вида ~ \.php$ обрабатывать не через библиотеку pcre
> а специально оптимизированной для такого случая функцией "сопоставления"?
> 
> например, при парсинге конфига - распознавать regexпы \.AB$ \.ABC$ \.ABCD$
> и потом при обработке запросов соответствие uri таким шаблонам можно будет
> проверять буквально несколькими машинными инструкциями. например, для i386
> и шаблона ~ \.php$ весь match может быть сформулирован 1 машинной командой
> псевдокод: *( (uint32*)( uri_string[ uri_len - 4 ] ) ) == (uint32)('.php')

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


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list