2014-02-22 79 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