Есть ли негативные последствия при использовании Mod-Rewrite? - PullRequest
23 голосов
/ 25 августа 2008

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

Ответы [ 3 ]

37 голосов
/ 25 августа 2008

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

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

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

7 голосов
/ 26 августа 2008

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

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

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

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

3 голосов
/ 25 августа 2008

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

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

...