减少 Heroku 编译的 Slug 大小

Posted

技术标签:

【中文标题】减少 Heroku 编译的 Slug 大小【英文标题】:Reduce Heroku Compiled Slug Size 【发布时间】:2011-02-24 02:10:05 【问题描述】:

我刚刚将我的应用程序上的 rails 更新到 v2.3.6,并使用了 Bamboo-ree-1.8.7 堆栈,编译后的 slug 大小已增长到 40.5Mb!在最后一次 git push 之前,slug 大小约为 20Mb,并且使用的是 rails v2.3.5。

是不是因为我的 slug 安装了两个 rails 版本?可能我遗漏了一些东西,但我没有在我的应用程序中添加任何特殊代码/文件以将 slug 大小增加 ~20Mb。

你能告诉我如何减少蛞蝓的大小吗?

任何帮助将不胜感激。

非常感谢您。

【问题讨论】:

【参考方案1】:

有一个有用的方法是将.slugignore 文件添加到项目的根目录中,以告诉 Heroku 不要将某些文件或目录编译到 slug 中。我的看起来像这样:

*.psd
*.pdf
test
spec
features
doc
public

public 条目在那里,因为我提供来自 Amazon S3 服务的所有静态文件;如果您不使用外部内容交付系统,请不要使用该行。

【讨论】:

是的,我知道我的包括 public/images 目录 + 样式表 + javascripts,因为我将它们保存在 S3 上。我已经升级到 Rails 2.3.8(正在使用 2.3.6),并且 slug 的大小已经大大减少到以前的大小(~20Mb)。我认为这是一些宝石依赖问题。无论如何感谢您的回复。 将脚本目录添加到 .slugignore 是否安全? 这是一个很好的问题 Philipe,您知道这样做是否安全吗? 我试过了,应用程序运行良好,但您无法使用 slugignore 中的脚本在 Cedar 上启动控制台。【参考方案2】:

如果您在 cedar 堆栈上使用 less/bootstrap,则可以通过预编译和脚本化预编译和推送来减少 slug 大小,以便不包含 less gem 和依赖项,请参阅here。

【讨论】:

你写了一篇非常好的和相关的博客文章,但我认为你用 URL 缩短器降低了它的成本。【参考方案3】:

您还可以排除任何未在生产环境中使用的 gem,以稍微精简一下。确保您的 Gemfile 根据环境拆分 gem,然后排除那些不需要的环境。

heroku config:add BUNDLE_WITHOUT="development:test:staging"

取自 Heroku 博客 here

【讨论】:

目前这仅适用于不在 Caledon Cedar 堆栈上运行的应用程序。

以上是关于减少 Heroku 编译的 Slug 大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Heroku 上为每个测功机设置单独的 slug?

减少git存储库大小

如何减少 cx_Freeze 编译的 Python 可执行文件大小?

通过使用具体类而不是接口,编译后的 js 的大小减少了多少

减少 GCC 目标 EXE 代码大小?

在 Heroku 上预编译资产时如何普遍跳过数据库接触