【发布时间】: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