Routes.rb vs rack-rewrite vs nginx/apache重写规则

dre*_*ves 5 performance mod-rewrite ruby-on-rails url-rewriting

我对以前的应用程序版本中的遗留URL有几十条重写规则.我看到三个选择:

  1. 只需在路由文件中添加"匹配"行(config/routes.rb)
  2. 使用机架重写
  3. 创建Nginx/Apache重写规则(在我的例子中是Nginx)

我认为3具有比2更好的性能,其性能优于1.

我的问题:

  • 真的吗?
  • 如果是这样,重要的是多少?
  • 我可能没有考虑过其他权衡吗?
  • 除了这三个之外还有其他任何选择吗?

sma*_*thy 9

  1. 是的,您的表现顺序正确.
  2. 取决于您的网站,流量,这些重写规则的点击次数 - 很可能性能比可维护性要重要得多.
  3. 可维护性 - 使用您所知道的以及您的开发人员所知道的内容.Apache的重写语法很容易出错,而且往往是Write-Once-Read-Never.Nginx是相当不错的,但仍然是一个新的DSL供你和你的开发人员学习.rack-rewrite是Apache的反面,它实际上很难犯错,因为它很简单(我认为它比它更简单routes.rb)
  4. 没有值得评价.

  • 这就是我要写的确切答案:)路由最容易维护,性能也很好.你可以在lib中创建一个'legacy-rewrites.rb'文件并将其包含在routes.rb中,这样就不会使你的主应用程序配置混乱. (4认同)