2014-08-29 23 views
16

Zamieściłem podobne pytanie tutajJak włączyć kompresję w Ruby on Rails?

Serving Compressed Assets in Heroku with Rack-Zippy

ale postanowił zrezygnować z tej usługi, ponieważ nie mogłem dostać się do pracy.

Uruchomiłem PageSpeed ​​Insights na mojej stronie internetowej, aby określić szybkość mojej witryny.

Najważniejszą propozycją, jaką otrzymałem, było Włączenie kompresji.

Compressing resources with gzip or deflate can reduce the number of bytes sent over the network. 
Enable compression for the following resources to reduce their transfer size by 191.2KiB 
(74% reduction). 

Mam postępujesz zgodnie z instrukcjami na tej stronie

https://developers.google.com/speed/docs/insights/EnableCompression

i mówi, aby skonsultować się z dokumentacją serwera WWW, w jaki sposób włączyć kompresję:

Użyłem na tej stronie, aby dowiedzieć się, mój serwer WWW

http://browserspy.dk/webserver.php

Okazuje się, że mój serwer internetowy to WEBrick.

PageSpeed ​​Insights Strona tylko wymienia następujące 3 serwery

Apache: Use mod_deflate 
Nginx: Use ngx_http_gzip_module 
IIS: Configure HTTP Compression 

Rozglądałem do dokumentacji kompresji gzip dla serwerów WEBrick ale nie mogłem znaleźć nic.

Szukałem, jak włączyć kompresję w Railsach i nie mogłem niczego znaleźć. Dlatego proszę tutaj.

Próbowałem używać Rack Zippy, ale zrezygnowałem z niego.

W tej chwili nie wiem nawet, od czego zacząć. Moim pierwszym krokiem jest dowiedzieć się, co powinienem zrobić.

Edit

Poszedłem za sugestię Ahmeda korzystania Rack :: deflator

I potwierdził, że miałem go uruchamiając

rake middleware 
=> use Rack::Deflator 

a następnie

git add . 
git commit -m '-' 
git push heroku master 

niestety PageSpeed ​​wciąż mówi, że to konieczne s do kompresji. Potwierdziłem to, przechodząc do Developer Tools < < Ustawienia sieciowe i odświeżając stronę. Rozmiar i zawartość były praktycznie identyczne dla każdego zasobu, co oznacza, że ​​pliki nie są skompresowane.

Czy coś jest nie tak z jednym z moich plików?

Dziękuję za pomoc.

Oto moja pełna konfiguracja/aplikacja.Plik rb:

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

Bundler.require(*Rails.groups) 

module AppName 
    class Application < Rails::Application 

    config.middleware.use Rack::Deflater 
    config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) 
    config.exceptions_app = self.routes 

    config.cache_store = :memory_store 

    end 
end 

Jeśli wystąpi problem, źródło prawdopodobnie tam jest, prawda?

Czy muszę zainstalować klej Deflator?

Odpowiedz

29

włączyć kompresję

go dodać do config/environment.rb:

module YourApp 
    class Application < Rails::Application 
    config.middleware.use Rack::Deflater 
    end 
end 

Źródło: http://robots.thoughtbot.com/content-compression-with-rack-deflater

+3

Po ponownym uruchomieniem Page Speed, nadal pojawia się ten sam komunikat, że muszę włączyć kompresję. Ponadto, używając PageSpeed ​​i Network, mój rozmiar i treść są nadal praktycznie identyczne. Doceniam jednak odpowiedź i za to dostaję mój głos. Dziękuję za poświęcony czas – Darkmouse

+10

Istnieje klejnot, który możesz wypróbować: https://github.com/romanbsd/heroku-deflater – Ahmed

+0

Już miałem powiedzieć, że zatrzymanie klejnotu heroku-deflater rozwiązało mój problem. Proszę zignorować mój poprzedni post. Dzięki za pomoc. – Darkmouse

11

Rack::Deflater powinno działać, jeśli używasz insert_before (zamiast "stosowania"), na miejscu znajduje się w górnej części stosu oprogramowania pośredniego, przed jakimkolwiek innym oprogramowaniem pośredniczącym, które może wysłać odpowiedź. .use umieszcza go na dole stosu. Na moim komputerze najwyżej położonym oprogramowaniem pośredniczącym jest Rack::Sendfile. Więc chciałbym używać:

config.middleware.insert_before(Rack::Sendfile, Rack::Deflater) 

Można uzyskać listę oprogramowania pośredniczącego w celu załadunku wykonując rake middleware z wiersza poleceń.

Uwaga: A good link for insert_before vs Use in middleware rack

+0

Dodałem łącze, które znalazłem odnośnie do użycia insert_before (zamiast "use"), aby umieścić go w górnej części stosu oprogramowania pośredniego. ** Mam nadzieję, że wszystko z nim w porządku ** –