Routes.rb против rack-перезаписи против правил перезаписи nginx / apache

#ruby-on-rails #performance #mod-rewrite #url-rewriting

#ruby-on-rails #Производительность #мод-перезапись #url-переписывание

Вопрос:

У меня есть десятки правил перезаписи для устаревших URL-адресов из предыдущего воплощения моего приложения. Я вижу три варианта:

  1. Просто добавьте строки «совпадения» в файл routes (config/routes.rb)
  2. Используйте rack-перезапись
  3. Создайте правила перезаписи Nginx / Apache (в моем случае Nginx)

Я полагаю, что 3 имеет лучшую производительность, чем 2, которая имеет лучшую производительность, чем 1.

Мои вопросы:

  • Это правда?
  • Если да, то насколько это важно?
  • Есть ли другие компромиссы, которые я, возможно, не рассматривал?
  • Какие-либо другие варианты, кроме этих трех?

Ответ №1:

  1. Да, у вас правильный порядок производительности.
  2. Зависит от вашего сайта, трафика, количества обращений по этим правилам перезаписи — по всей вероятности, производительность имеет гораздо меньшее значение, чем ремонтопригодность.
  3. Удобство сопровождения — используйте то, что знаете вы, и то, что знают ваши разработчики. Синтаксис перезаписи Apache легко ошибиться, и, как правило, он довольно прост для записи-один раз-прочтения-никогда. Nginx довольно хорош, но все еще является новым DSL для вас и ваших разработчиков. rack-rewrite — это обратная версия Apache, на самом деле трудно ошибиться, потому что это так просто (я думаю, это проще, чем routes.rb )
  4. Ничего, заслуживающего оценки.

Комментарии:

1. Это как раз примерно тот точный ответ, который я собирался написать 🙂 маршруты проще всего поддерживать, и производительность будет на высоте. вы можете создать файл ‘legacy-rewrites.rb’ в lib и включить его в routes.rb, таким образом, он не будет загромождать конфигурацию вашего основного приложения.