2014-02-22 49 views
1

我有一个在自定义域名的heroku上的应用程序。 www.mydomain.com拥有myapp.herokuapp.com的cname记录。 mydomain.com有一个301重定向到www.mydomain.com。我在Heroku Ceder堆栈上。我使用heroku_rails_deflate宝石启用了gzip压缩。对于使用www.mydomain.com的请求,服务器不会响应gzip资产。heroku上gzip压缩资产不适用于自定义域名

*编辑* * * 当我最初发布我的301重定向而不能正常工作。现在,当我蜷缩mydomain.com时,我得到了301响应。


curl -I -H 'Accept-Encoding: gzip' http://myapp.herokuapp.com/assets/application-7cbaf74d14cc5a5ab54262a43e4xxxxx.css 

curl -I -H 'Accept-Encoding: gzip' http://mydomain.com/assets/application-7cbaf74d14cc5a5ab54262a43e4xxxxx.css 

两个结果:

Age: 1390 
Cache-Control: public, max-age=2592000, no-transform 
Content-Encoding: gzip 
Content-length: 19377 

然而

curl -I -H 'Accept-Encoding: gzip' http://www.mydomain.com/assets/application-7cbaf74d14cc5a5ab54262a43e4xxxxx.css 

结果:

Age: 7378 
Cache-Control: public, max-age=2592000 
Content-length: 119016 

此外,机架缓存似乎为每个url维护一个单独的缓存。日志显示:

cache: [HEAD /assets/application-7cbaf74d14cc5a5ab54262a43e4xxxxx.css] miss, store 

一个顶点域请求后,它已经服役使用myapp.herokuapp.com

编辑同一资产全新的要求: 这里是我的config.ru:

require ::File.expand_path('../config/environment', __FILE__) 
run Rails.application 

** 另外加法 *** ! nslookup使用opendns nameservers表明,两个不同的网址使用两个不同的IP地址,即使一个是另一个的cname(我不是DNS专家) ! *

有没有办法让heroku对待不同的网址一样?如果没有,是否有可能让gzip为所有人工作?提前感谢您提供任何提示或解决方案。

+0

什么是你的config.ru样子? – CDub

+0

@CDub config.ru是默认的,我把它添加到 – laertiades

回答

3

您需要将use Rack::Deflater添加到您的config.ru,以便让Heroku提供压缩资源。

你config.ru会是这个样子:

require ::File.expand_path('../config/environment', __FILE__) 
use Rack::Deflater 
run Rails.application 

There is a good discussion上或者使用Rack::Deflater或一些替代方案,以便为在Heroku上压缩资产,但似乎人们继续回来Rack::Deflater

+0

@laertiades上,你的问题是用这个解决的吗?遵循这个答案后,我的自定义域名仍然没有得到gzip压缩。 – Hendyanto