【问题标题】:How to smartly cache/expire asset files in development mode with rails如何在开发模式下使用 Rails 智能地缓存/过期资产文件
【发布时间】:2013-09-07 07:40:52
【问题描述】:

在 Rails 之上构建了一个繁重的 javascript 应用程序 (SPA) 之后,现在,随着应用程序的增长,我们在开发模式下的可扩展性方面遇到了一些问题。目前有超过 650 个 javascript 文件,每次我们需要重新加载页面大约需要 30 秒才能完成并下载所有文件。

我想知道 Rails 是否有任何配置选项可以在开发模式下缓存这些资产(不是压缩),并且当它们中的任何一个被更改时,它会使资产缓存过期。这里是development.rb文件配置:

MyApp::Application.configure do
  config.cache_classes = false
  config.action_controller.perform_caching = false
  config.consider_all_requests_local = true
  config.assets.enabled = true
  config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
  config.assets.compress = false
  config.assets.debug = true
end

可能存在该选项,请告诉我。

谢谢。

【问题讨论】:

  • Discourse 在 Rails 中有一个基于 JavaScript 的大型开源应用程序(大约 600 个 .js 文件),github.com/discourse/discourse,也许你可以看看他们是如何处理它的。另一个选项是将config.assets.debug 设置为false,这不会压缩文件,只是连接。
  • 抱歉在这里重复发帖,但这篇博文可能也很相关samsaffron.com/archive/2013/05/03/…,请查看“我花时间使开发环境快速”
  • @kroofy 谢谢伙计,当我将 assets.debug 更改为 true 时,我的应用程序加载得如此之快,以至于我什至没有尝试过 discourse turbo_dev.rb 中间件解决方案,但我会检查一下..顺便说一句,如果你回答这个问题,我可以给你声誉;)
  • 你确定它的文件下载时间而不是一些阻塞的 JS。另外你确定它不是让你慢下来的 JS 编译时间吗?您可能需要查看延迟评估或异步加载依赖项。
  • 速度变慢的肯定是请求的数量,而不是实际上的文件大小。@kroofy 说将这些文件连接在一起解决了这个问题。它从 30 秒开始(650 个小文件)到 4 秒(1 个大文件)

标签: javascript ruby-on-rails caching asset-pipeline scalability


【解决方案1】:

已经作为评论发布,但他喜欢这个答案,所以又来了。

最简单的选项是将config.assets.debug 设置为false,这不会压缩文件,只是连接。

顺便说一句,Discourse 在 Rails 中有一个基于 JavaScript 的大型开源应用程序(目前大约有 600 个 .js 文件),https://github.com/discourse/discourse,也许你可以看看那里,看看他们是如何处理它的。这是一篇博客文章,详细介绍了 Discourse 中的一些可能解决方法,http://samsaffron.com/archive/2013/05/03/eliminating-my-trivial-inconveniences,请参阅“我花时间使开发环境快速”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 2012-12-20
    • 2014-05-23
    相关资源
    最近更新 更多