ruby-on-rails – 多次部署后的Heroku Slug大小
我有一个
Ruby on Rails应用程序非常接近slug大小限制(300mb).我使用.slugignore尽可能地缩小了尺寸但是没有得到我想要的结果.
一时兴起,我尝试创建一个新的Heroku应用程序并为其部署相同的git存储库.罗,它看得远远低于(仅80mb对208mb).当访问bash并检查每台服务器上的大小时,我注意到服务器之间存在一些差异: du -hs * 130M (old) vs 1.4M (new) public 23M (old) vs 5.3M (new) tmp ... 是什么赋予了?在Heroku上,用户是否希望在足够的部署通过后销毁并重新创建应用程序?我查看了公共目录,它保留了各种旧的删除资产和垃圾.如何清除我现有的应用程序而不破坏它并从头开始? 解决方法
这可能与Rail在部署期间避免问题的尝试有些相关.目标是在部署期间避免停机和/或错误.您的代码不会立即部署到所有服务器. Rails解决方案是允许多个版本的资产同时存在.典型的过程是:
%> rake assets:precompile # To build new assets %> rake assets:clean # Remove old assets Rails keeps 2 previous versions的资产(默认情况下).根据应用程序,您可能需要一段时间的旧资产.例如,如果您有一个繁重的JavaScript应用程序一次获取资源,那么通过XHR动态更新.在客户端中运行的旧代码可以引用其他旧资源.即使使用非客户端繁重的应用程序,您可能需要几秒钟,其中一些节点指的是旧资产,而另一些节点指的是新资产. 这可以解释您的旧应用程序中公众规模较大的一些原因.它基本上有三个版本的所有资产,而新部署只有一个版本.听起来好像必须弄乱你的构建环境,因为即使你的新应用程序中所有资产占用1.4MB,这个大小的三倍应该只有5MB而不是旧应用程序中的130MB. 除了有三个版本的资产外,tmp目录中还有一些累积.资产编译过程会在tmp目录中缓存一些信息. Rails有一个rake tmp:cache:clear,你可以定期运行git摆脱那里的cruft. Heroku automatically runs 如果您的tmp目录中的公共/资产目录增长超过3个版本或50MB,则创建新应用程序是一个很好的方法来清除问题.你也可以create a custom slug.只是运行rake资产:清理或rake tmp:cache:在heroku控制台上清除不起作用.这只会清理dyno上的东西而不是你的slu ..因此,当创建新的dyno时,您的清洁将被丢弃. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |