我在Rails应用程序中提供资产时遇到了很大的麻烦。在我的VPS(直接由nginx,而不是Rails提供)上加载2KB图像需要42毫秒。在Heroku上加载它有时可能需要1分钟以上。
奇怪的是,此时应用程序只是通过高压服务的一堆静态页面。
我的所有资产都是在本地预编译的。我安装了rails_12factor和heroku_rails_deflate gems。
这是我的Sprockets配置:
配置/初始化/ assets.rb
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w( pages/home.js )
配置/环境/ production.rb
# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = true
# Compress JavaScripts and CSS.
config.assets.compress = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# Generate digests for assets URLs.
config.assets.digest = true
你有什么想法吗?
这是我日志的摘录:
14-07-11T23:48:54.917535+00:00 heroku[router]: at=info method=GET path="/assets/pages/home-dca14429ad8cf7d73be6230207124ab1.js" host=v2-interconn.herokuapp.com request_id=aefbec46-f505-45b9-b368-1ad5f7924c70 fwd="188.10.253.161" dyno=web.1 connect=1 service=3 status=200 bytes=916
2014-07-11T23:48:54.911470+00:00 heroku[router]: at=info method=GET path="/assets/application-a6b582f07af35ba97eef7b73812c37b9.js" host=v2-interconn.herokuapp.com request_id=3cf43d9f-e35b-4f62-8cbc-47121e07375b fwd="188.10.253.161" dyno=web.1 connect=0 service=8 status=200 bytes=917
2014-07-11T23:48:54.940930+00:00 heroku[router]: at=info method=GET path="/assets/ballicons/letter-0223f57c4a985183df154ed1219f260e.svg" host=v2-interconn.herokuapp.com request_id=6c7a7b12-683e-42e7-9975-6ee58b17821e fwd="188.10.253.161" dyno=web.1 connect=1 service=2 status=200 bytes=940
2014-07-11T23:48:55.064240+00:00 heroku[router]: at=info method=GET path="/assets/ballicons/laptop-5ac5cd546c687e0bbba1e4043c5f62f8.svg" host=v2-interconn.herokuapp.com request_id=9a659d8b-8998-4f02-b8b3-edd1a6cfb34c fwd="188.10.253.161" dyno=web.1 connect=3 service=3 status=200 bytes=940
Heroku的问题是resolved。感谢所有帮助过的人! :)
答案 0 :(得分:2)
我在Twitter上找到了解决我类似问题的信息
这似乎与websockets有关。禁用它似乎可以解决问题。
heroku labs:disable websockets -a myapp -p production
这使它像以前一样工作,虽然日志现在看起来不同了:)
感谢Twitter上的@dwaynemac @stephane_tavera。
修改强>:
Heroku将此视为解决问题,但如果再次发生,则会应用答案。
答案 1 :(得分:1)
<强>的Heroku 强>
我能给出的唯一建议是将图像放在第三方服务such as S3
上吗?
Heroku本身托管在亚马逊AWS平台上,因此不会为资产提供服务 任何问题。我一直使用Heroku(good demo being here),我们的资产加载速度和我们一样快
-
<强> DB 强>
我发现Heroku的一件事就是如果你的数据库连接很糟糕,你将无法快速加载页面。
db
连接是Heroku的致命弱点 - 除非您使用Heroku自己的postgres
db,否则您必须确保快速连接
除此之外 - 最好的办法是提供您的日志供我们查看!