Rails 资产管道:只编译一次外部库以减少部署时间
Rails asset pipeline: Compile external libraries only once to decrease deployment time
我的 Rails 项目中有一堆外部 javascript 库,它们都包含在 application.js 中,因此它们在每次部署到 Heroku 时都会预编译,运行时间为很久了。
您对如何减少资产编译时间有什么建议吗?如果可能的话,不使用 CDN。
谢谢。
为了将来参考,以下是我解决问题的步骤:
- 在适当的文件夹中添加外部资产,vendor/assets/javascripts 或 vendor/assets/stylesheets
- 将资产导入从应用程序清单移动到 app/assets/javascripts/external.js 或 app/assets/stylesheets/external.css.scss
- 将 config/application.rb 中的 config.assets.precompile 行更改为
config.assets.precompile = ['external.js', 'external.css']
(注意 = 而不是 +=)
- 运行 耙子 assets:precompile
- 从 public/assets 中删除 manifest.yml 因为它向 Heroku 指示它是否应该编译资产
- 将生成的 public/assets 文件夹推送到源代码管理
- 将 config.assets.precompile 行改回原来的样子
这样,external.js 和 external.css 在本地编译,application.js 和 application.css 在部署时编译。就我而言,部署时间现在快两倍多。它确实需要一些手动工作,但可以作为耙子实施。
我的 Rails 项目中有一堆外部 javascript 库,它们都包含在 application.js 中,因此它们在每次部署到 Heroku 时都会预编译,运行时间为很久了。
您对如何减少资产编译时间有什么建议吗?如果可能的话,不使用 CDN。
谢谢。
为了将来参考,以下是我解决问题的步骤:
- 在适当的文件夹中添加外部资产,vendor/assets/javascripts 或 vendor/assets/stylesheets
- 将资产导入从应用程序清单移动到 app/assets/javascripts/external.js 或 app/assets/stylesheets/external.css.scss
- 将 config/application.rb 中的 config.assets.precompile 行更改为
config.assets.precompile = ['external.js', 'external.css']
(注意 = 而不是 +=) - 运行 耙子 assets:precompile
- 从 public/assets 中删除 manifest.yml 因为它向 Heroku 指示它是否应该编译资产
- 将生成的 public/assets 文件夹推送到源代码管理
- 将 config.assets.precompile 行改回原来的样子
这样,external.js 和 external.css 在本地编译,application.js 和 application.css 在部署时编译。就我而言,部署时间现在快两倍多。它确实需要一些手动工作,但可以作为耙子实施。