Есть какие-либо негативные последствия при использовании Mod-Rewrite?

StackOverflow https://stackoverflow.com/questions/26559

  •  09-06-2019
  •  | 
  •  

Вопрос

Я знаю, что есть много положительных моментов, которых достигает mod-rewrite.Но есть ли какой-то негатив?Очевидно, что если у вас плохо написанные правила, у вас возникнут проблемы.Но что, если у вас сайт большого объема и вы постоянно используете mod-rewrite, окажет ли это существенное влияние на производительность?Я быстро поискал несколько тестов в Google и почти ничего не нашел.

Это было полезно?

Решение

Я использовал mod_rewrite на сайтах, которые получают миллионы просмотров в месяц без каких-либо существенных проблем с производительностью.Вы действительно должны знать, какие изменения будут применены в первую очередь, в зависимости от ваших правил.

Использование mod_rewrite, скорее всего, быстрее, чем синтаксический анализ URL-адреса на вашем текущем языке.

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

Другие советы

Чтобы повторить то, что Райан сказал выше, правила в .htaccess это действительно может снизить время загрузки на загруженном сайте по сравнению с наличием правил в вашем конфигурационном файле.Изначально мы пробовали это (~ 60 миллионов страниц в месяц), но это продолжалось недолго, пока наши серверы не начали дымиться :)

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

Последний флаг ("L") полезен для ускорения выполнения ваших правил, когда ваши правила, к которым чаще всего обращаются, находятся вверху и оцениваются в первую очередь.Однако это может значительно усложнить обслуживание, если у вас длинный набор правил - однажды утром я потратил впустую пару очень неприятных часов, редактируя свой список правил на середине, и в верхней части оказалось одно, которое охватывало больше, чем предполагалось!

У нас также возникли трудности с поиском соответствующих тестов, и в итоге мы разработали наш собственный внутренний набор тестов.Как только мы разобрались с нашими правилами, должным образом упорядочили их и внедрили в наш Apache conf, мы не обнаружили большого негативного влияния на производительность.

Если вы беспокоитесь о производительности apache, одна вещь, которую следует учитывать, если у вас много правил перезаписи, - это использовать флаг "пропустить".Это способ пропустить соответствие правилам.Таким образом, все накладные расходы, которые были бы потрачены на сопоставление, сохраняются.

Однако будьте осторожны, я работал над проектом, в котором часто использовался флаг "пропустить", и это затрудняло обслуживание, поскольку это зависит от порядка, в котором все записывается в файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top