分析开发中的慢速资产

Profiling slow assets in development

提问人:Jonathan Allard 提问时间:3/5/2014 最后编辑:CommunityJonathan Allard 更新时间:6/20/2021 访问量:1322

问:

每次我在开发中对 SASS 进行更改时,我在加载 .application.css

我读过一些其他问题,并尝试过:

  • 设置。config.assets.debug = false
  • 更改导入和需求(我使用 SASS 变量)
  • 使用 Miniprof 及其火图
  • 使用 rails-asset_profile

这是我读到的:

我从 Rails 3.2 和现在的 4.2 中一直遇到这个问题。

我在这里快疯了。我如何找到这个烂摊子中的瓶颈?

我正在寻找一种解决方案,使我能够精确地确定时间花费在哪里,并提出减少编译时间的方法。

Ruby-on-Rails Sass 资产管道

评论

1赞 phoet 3/5/2014
你看过浏览器吗?哪种资产是慢的?
0赞 Jonathan Allard 3/5/2014
@phoet 哦,编译好的CSS文件。忘了提那个。
0赞 phoet 3/5/2014
一个简单的方法是使用 Files 和 Put 语句。只是为了获得任何参考点.css.erb
2赞 Martin Tournoij 12/31/2014
您的文件是如何组织的?如果你使用大量的 if SASS 语句,如果你有大量的 CSS 代码,你会严重减慢速度,因为在每次更改时,SASS 都必须重新编译所有内容,而不仅仅是单个文件。本周早些时候,我碰巧遇到了这种情况,并且使用而不是解决了这个问题;我创建了一个单独的文件来存储变量和混合(每个 SASS 文件中都有)。@importrequire@importvariables.css.sass@import
1赞 mswiszcz 2/11/2017
你试过sassc-rails吗?它将预编译速度提高了 3 倍。但是,如果您使用指南针,它将不起作用

答:

0赞 Antiarchitect 11/23/2015 #1

有一个名为 quiet_assets 的 Gem 禁止记录资产负载。在 Rails 3.x 时代,它大大加快了我的开发模式。如果这有帮助,请告诉我。

0赞 hedgesky 11/28/2015 #2

在 Sprockets::Manifest 类的 find 方法中查看源代码。您可以将其更改为以下内容:sprockets

paths.each do |path|
  start = Time.now
  puts "Start #{path}"
  environment.find_all_linked_assets(path) do |asset|
    yield asset
  end
  puts "Finished: #{Time.now - start}"
end

因此,它将打印编译每个资产所需的所有时间。希望它能对:)有所帮助

编辑:这块代码来自分支。您可以使用以下命令查看和编辑mastersprockets

bundle open sprockets

更改后的输出:

$ rake assets:precompile 
Start admin.css
I, Ä2015-11-28T10:45:26.986231 #45492Ü  INFO -- : Writing /Users/sky/projects/photo_school/public/assets/admin-0e445dcfdc3bd3029943b7d3621b4156c9838eed229c3628f8c558cbb3ce1a59.css
Finished: 10.165564

编辑:稍微更改了代码并更改了链接(昨天将链接放到错误的分叉:很匆忙,仅在赏金关闭前 15 分钟内才发现您的问题:))。我在我的项目中检查了这段代码,它工作正常(该项目使用链轮 3.3.3 版)。

评论

0赞 hedgesky 11/28/2015
哦,错过了,对不起。试试这个块:github.com/rails/sprockets/blob/master/lib/sprockets/......