开发模式下的资产编译速度慢

lua*_*sus 10 javascript ruby ruby-on-rails asset-pipeline

我有一个包含数百个咖啡脚本文件的大型rails应用程序.

有时当我在coffeescript文件中进行微小更改或切换分支时,整个资产都被预编译,我必须等待很长时间才能加载页面:

Started GET "/assets/application.js" for 127.0.0.1 at 2013-01-11 19:39:45 +0100
Compiled sprockets/commonjs.js  (0ms)  (pid 18142)
Compiled jquery.js  (2ms)  (pid 18142)
Compiled jquery_ujs.js  (0ms)  (pid 18142)
Compiled underscore.js  (0ms)  (pid 18142)
Compiled backbone.js  (0ms)  (pid 18142)
Compiled backbone_rails_sync.js  (0ms)  (pid 18142)
Compiled handlebars.runtime.js  (0ms)  (pid 18142)
Compiled moment.js  (0ms)  (pid 18142)
...and so on
Run Code Online (Sandbox Code Playgroud)

我使用以下资产配置config/development.rb:

# Do not compress assets
config.assets.compress = false

# Expands the lines which load the assets
config.assets.debug = false
Run Code Online (Sandbox Code Playgroud)

当我设置时,config.assets.debug = false我必须等待很长时间才能加载数百个js文件.问题是:如何找到中庸之道?如何在大型应用程序的开发模式中优化资产配置?

小智 7

看一下Discourse团队的这个中间件.我们在rails 4应用程序中取得了巨大的成功 - 将重新加载时间从一分钟缩短到5秒.


Jan*_*gre 2

这是一个可悲的事实,但你不这样做。没有一个干净的方法来解决这个问题。

然而,您可以遵循一些模式来最大程度地减少您的痛苦,如果我理解正确的话,您必须在开发过程中等待很长时间才能看到变化。

如前所述,这些已在此处1此处2看到。

  1. 看看这里的第 2 项1的第 2 项1 。
  2. 破坏许多文件中的资产。这意味着发生更改时要处理的行数会减少。
  3. 更喜欢 css/js,它们可能不那么酷,但不需要编译。
  4. 在资产预编译时寻找一些有趣的事情来做。它可能会降低生产力,但肯定会消除痛苦。