2012-04-24 4 views
13

Jede Seitenanforderung in meiner App zieht ungefähr 30 Assets herunter (JavaScripts und Bilder), was sowohl Drittanbieter-Sachen in Vendoren/als auch App/Zeug ist. Natürlich wird das gesamte JavaScript in der Produktion kombiniert und minimiert, also ist es in Ordnung, aber in der Entwicklung ist es sehr langsam. Wie 8 Sekunden, um die Seite zu laden und wird nur schlechter werden. Ist das normal und was kann getan werden, um es zu beschleunigen?Assets, die langsam in Entwicklung geladen werden

Ich habe versucht, Bilder von Assets/zu public/zu bewegen, aber es dient ihnen genauso langsam. Etwa 3-4 Dateien pro Sekunde.

Dies geschieht auf einem schnellen Macbook Pro mit WEBrick und Unicorn.

+0

Wie viele Arbeiter hast du im Einhorn geöffnet? WEBrick kann eine Anfrage einzeln bearbeiten, also dauert es normalerweise 8 Sekunden für 30 Assets. Wenn Sie Einhorn mit 4-5 Arbeitern konfigurieren, wird es viel schneller laden – bcd

+0

Gute Idee, aber ich habe es gerade mit 2, 5 und 16 versucht. Kein merklicher Unterschied leider. Nur um klar zu sein, ich setze "worker_processes 5" in config/unicorn.rb und starte bundle exec unicorn_rails. – mahemoff

+0

Stellen Sie sicher, dass Sie mit den Entwicklerwerkzeugen von Firebug oder Chrome überprüfen, um sicher zu gehen, was die Zeit kostet - es kann die Hauptseite sein und nicht die Assets. Ich habe fast 20 Assets und die benötigte Zeit beträgt weniger als eine halbe Sekunde (Seiten mit wenig Datenbankarbeit). – Matthew

Antwort

25

ausschalten Asset Debuggen hilft sollte die Geschwindigkeit ein wenig verbessern.

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

vielen Dank :) – achempion

+0

das hat Wunder gewirkt. – nfriend21

+0

Was ist der Nachteil, das zu tun? –

1

Ich persönlich benutze thin Server. Verlangsamte auch meine Entwicklungsumgebung (dauert + 12 Sekunden). Fügen Sie es tun, um Ihre Gemfile:

group :development do 
    gem "thin" 
end 

Bündel und laufen mit:

thin start 

Bevor Vorkompilieren Vermögen gebracht i meine Ladezeit bis zu + -5 (mit etwas Konfiguration und Code-Refactoring). Hoffe, es

enter image description here

-source dünne Website

+0

Danke für die Profilierungsdaten. Leider klappte es ungefähr so ​​schnell wie ich als Einhorn. Dauert 6 Sekunden, um etwa 30 Dateien zu laden, was es dauert, bis die App ausführbar ist (das sind meist JS/CSS-Dateien). – mahemoff

0

Check-out könnte guard und die dazugehörigen Plug-ins Vermögen im Hintergrund vorzukompilieren, wie Sie sie im Dateisystem bearbeiten.

+0

Ich muss vielleicht darauf zurückgreifen.Ich denke, es wird eine Menge Zeit sein, es so einzurichten, dass es mit der Anlagenpipeline in der Produktion immer noch einwandfrei funktioniert. – mahemoff

9

Am wahrscheinlichsten ist das Problem, dass Rails alle Klassen bei jeder Assets-Anforderung neu lädt. Dieses Juwel: https://github.com/wavii/rails-dev-tweaks behebt das Problem, indem es Rails Autoload-Regeln optimiert.

+0

Wow, das ist eine Menge Nachladen. Wusste nicht, dass das passiert, ich werde die Tweaks des Entwicklers überprüfen, danke. – mahemoff

+0

Phänomenal! Das hat tatsächlich funktioniert. – mahemoff

+1

@mahemoff Wenn dies das Problem gelöst hat, sollte es als Antwort markiert werden. –

0

Ich glaube, dass rails die Assets jedes Mal in der Entwicklung kompilieren muss, während es für die Produktion nicht, abgesehen von dem ersten Mal, zu einer langsamen Entwicklung führt.

Verwandte Themen