【问题标题】:Rails 3.1 is very slow in development-mode because of assets, what to do?Rails 3.1 由于资产的原因在开发模式下非常慢,该怎么办?
【发布时间】:2011-09-22 23:44:23
【问题描述】:

添加 Sprockets 后,Rails 在开发模式下加载速度很慢,我应该怎么做才能加快速度?

【问题讨论】:

  • 您能否提供:您更改的Gemfile 部分,是Rails 3.1 还是修改后的Rails 3.0.x 应用程序,您在资产开发模式下的配置是什么?

标签: ruby-on-rails ruby-on-rails-3.1 sprockets


【解决方案1】:

看看https://github.com/wavii/rails-dev-tweaks

Rails 在开发模式下对每个 Sprockets 资产请求运行所有 to_prepare 挂钩。这包括诸如自动(重新)加载代码之类的事情,以及各种 gems 也潜入其中。

rails-dev-tweaks 在任何资产请求上禁用 to_prepare 和重新加载(以及其他一些 - 阅读其 README 的第一部分)。对于任何规模相当大的项目,都可以大大加快您的开发环境。对于您喜欢的任何其他请求,它也可以配置为执行此操作

【讨论】:

  • 不错的宝石,它使资产服务变得有用。 Rails 需要很长时间才能加载一个包含太多资源的页面。
  • Rails 开发现在再次很棒! :)
  • 耶! ^ ^ 那。作品。漂亮!
  • 要非常小心。由于这颗宝石,我们已经浪费了数小时和数小时的开发时间。
  • 您遇到了什么问题?如果你有时间,把一个 github issue 切到项目中;我有兴趣了解您的工作流程有何不同并受其影响。
【解决方案2】:

在参考了有关此问题的多个 Google 结果后,我确定了 DNS 问题所在。

问题是:Rails 正在执行反向查找。因此,如果您从直接 IP 或仅具有浏览器的机器的 /etc/hosts 中的主机名请求,我经常这样做,因为我将所有东西都放在一起运行的 VM 中,并且该 IP 无法快速解析在开发服务器中,Rails 将等待每个请求。

故事的寓意?在开发服务器(即运行 rails 的服务器)上包含与您的开发相关的每个 IP 的 /etc/hosts 条目。这意味着继续为每个假/虚拟/等创建主机条目...在您希望参与 Rails 测试的开发服务器上的 IP,因为当它记录请求等时,它会进行反向查找,并且你希望那是快速的。

【讨论】:

  • 我也遇到了同样的问题,能举个例子吗?
  • 我希望这个答案的措辞更好,因为我无法理解它。
【解决方案3】:

对我有用的奇怪解决方案。我通常通过在我的 hosts 文件中设置的 myapp.local:3000 导航到我正在开发的应用程序。资产加载速度慢得离谱。

通过 127.0.0.1:3000 导航到我的应用程序,资产加载速度很快,此外,在使用本地 ip 一次后,我可以使用 myapp.local:3000 导航,资产现在加载速度非常快。

希望我能告诉你原因,但我希望它可以帮助那里的人。我在 OSX 10.7.5 上。

【讨论】:

    【解决方案4】:

    您是否查看过它在生产中的运行速度?开发环境的行为与测试和生产环境不同,因此对性能的影响更大。如果没有更多信息,我们无法为您提供更好的答案。

    【讨论】:

      【解决方案5】:

      还可以在这里查看 Turbo Sprokets - https://github.com/ndbroadbent/turbo-sprockets-rails3

      看起来很有希望。

      【讨论】:

      • 这只会加速assets:precompile 并且开发环境可以即时编译。
      猜你喜欢
      • 1970-01-01
      • 2013-12-04
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多