#ruby-on-rails #performance #mod-rewrite #url-rewriting
#ruby-on-rails #Производительность #мод-перезапись #url-переписывание
Вопрос:
У меня есть десятки правил перезаписи для устаревших URL-адресов из предыдущего воплощения моего приложения. Я вижу три варианта:
- Просто добавьте строки «совпадения» в файл routes (config/routes.rb)
- Используйте rack-перезапись
- Создайте правила перезаписи Nginx / Apache (в моем случае Nginx)
Я полагаю, что 3 имеет лучшую производительность, чем 2, которая имеет лучшую производительность, чем 1.
Мои вопросы:
- Это правда?
- Если да, то насколько это важно?
- Есть ли другие компромиссы, которые я, возможно, не рассматривал?
- Какие-либо другие варианты, кроме этих трех?
Ответ №1:
- Да, у вас правильный порядок производительности.
- Зависит от вашего сайта, трафика, количества обращений по этим правилам перезаписи — по всей вероятности, производительность имеет гораздо меньшее значение, чем ремонтопригодность.
- Удобство сопровождения — используйте то, что знаете вы, и то, что знают ваши разработчики. Синтаксис перезаписи Apache легко ошибиться, и, как правило, он довольно прост для записи-один раз-прочтения-никогда. Nginx довольно хорош, но все еще является новым DSL для вас и ваших разработчиков. rack-rewrite — это обратная версия Apache, на самом деле трудно ошибиться, потому что это так просто (я думаю, это проще, чем
routes.rb
) - Ничего, заслуживающего оценки.
Комментарии:
1. Это как раз примерно тот точный ответ, который я собирался написать 🙂 маршруты проще всего поддерживать, и производительность будет на высоте. вы можете создать файл ‘legacy-rewrites.rb’ в lib и включить его в routes.rb, таким образом, он не будет загромождать конфигурацию вашего основного приложения.