2012-04-24 15 views
13

Każde żądanie strony w mojej aplikacji powoduje usunięcie około 30 zasobów (skryptów JavaScript i obrazów), które są materiałami stron trzecich sprzedawców/i aplikacji/materiałów. Oczywiście wszystkie JavaScript są połączone i zminimalizowane w produkcji, więc jest dobrze, ale w fazie rozwoju jest bardzo powolny. Jak 8 sekund, aby załadować stronę i będzie tylko gorzej. Czy to normalne i co można zrobić, aby je przyspieszyć?Assets ładuje się powoli w rozwoju

Próbowałem przesuwać obrazy z zasobów/do publicznych /, ale służy im równie powoli. Około 3-4 plików na sekundę.

To dzieje się na szybkim MacBooku Pro z WEBrick i Unicorn.

+0

Ilu pracowników otworzyłeś w jednorożcu? WEBrick może obsłużyć jedną prośbę naraz, więc normalne jest zajęcie 8 sekund w przypadku 30 zasobów. Jeśli skonfigurujesz jednorożca z 4-5 pracownikami, załaduje się znacznie szybciej – bcd

+0

Dobry pomysł, ale właśnie próbowałem tego z 2, 5 i 16. Nie zauważyłem żadnej różnicy niestety. Dla jasności ustawiam "worker_processes 5" w pliku config/unicorn.rb i uruchamiam pakiet exec unicorn_rails. – mahemoff

+0

Upewnij się, aby sprawdzić za pomocą narzędzi firebug lub chrome developer, co jest pewnym czasie - może to być strona główna, a nie zasoby. Mam prawie 20 zasobów, a czas potrzebny na to zajmuje mniej niż 1/2 sekundy (strony z małą ilością pracy z bazą danych). – Matthew

Odpowiedz

25

Wyłączanie debugowanie aktywów powinna zwiększyć szybkość trochę.

#development.rb 
config.assets.debug = false 
+0

dziękuję bardzo :) – achempion

+0

to działało cuda. – nfriend21

+0

co to jest wadą? –

1

Osobiście używam serwera thin. Spowalniało to również moje środowisko programistyczne (co daje mi + - 12 sekund). Dodaj to zrobić Gemfile:

group :development do 
    gem "thin" 
end 

wiązka i biegać z:

thin start 

Before aktywa prekompilacja I przyniósł mi czas ładowania do + -5 (z niektórych konfiguracji i przeróbek w kodzie). Nadzieję, że pomoże

enter image description here

-source cienki internetowej

+0

Dzięki za dane profilowania. Niestety, działało to równie szybko jak ja jednorożec. Zajmuje 6 sekund, aby załadować około 30 plików, co jest potrzebne do uruchomienia aplikacji (są to głównie pliki JS/CSS). – mahemoff

0

Można sprawdzić guard i związane z nim wtyczek do precompile aktywa w tle jak je edytować w systemie plików.

+0

Być może będę musiał uciec się do tego.Myślę, że będzie dużo czasu, aby skonfigurować go w sposób, który nadal działa prawidłowo z rurociągiem aktywów w produkcji. – mahemoff

9

Najprawdopodobniej problem polega na tym, że Railsy ponownie ładują wszystkie klasy dla każdego żądania zasobów. Ten klejnot: https://github.com/wavii/rails-dev-tweaks rozwiązuje problem, modyfikując reguły automatycznego ładowania Railsów.

+0

Wow, to dużo przeładowania. Nie wiedziałem, że tak się stanie, sprawdzę usprawnienia dev dzięki. – mahemoff

+0

Fenomenalny! To faktycznie zadziałało. – mahemoff

+1

@mahemoff Jeśli to rozwiązało problem, powinien zostać oznaczony jako odpowiedź. –

0

Uważam, że tory kolejowe muszą kompilować zasoby za każdym razem, gdy chodzi o rozwój, podczas gdy w przypadku produkcji nie ma to znaczenia, poza tym, że po raz pierwszy doprowadziłoby to do powolnego rozwoju.

Powiązane problemy