Kurze Beschreibung (wir sind in Browser-Debugger Netzwerk-Registerkarte):
%Vor%Funktioniert nur in der Entwicklung
ist immer (und browserübergreifend) reproduzierbar
Schienen 3.2.22.5
Die Zeit ist verloren in HAML (sehr sicher)
Ich arbeite an einem HTML-Editor, um Seiten zum Drucken zu gestalten. Dieser Editor ist - sagen wir - umfassend.
Beim Start muss ich die kompletten Editoren HAML (~ 1000 Zeilen) rendern, das dauert weniger als 5s (außer zuerst nach dem Start der Schienen). Das ist ziemlich schnell.
Die Grundstruktur sieht so aus (Pseudo-HAML, jede Zeile ist ein Partialwert, Zahlen sind ~ Renderzeit). Die Abschnittsanzahl (n) liegt normalerweise bei 10 bis 15
%Vor%beim Drucken (PDF) sieht es wie
aus %Vor%So weit, so gut und OK vor allem in einer Entwicklungsumgebung.
Aber wenn ich die Seite im Editor ändern muss und die neue Seite mit AJAX aufrufen muss, um nur das innere HTML zu bekommen
%Vor%Die Aktion dauert ungefähr 15 Sekunden (!). Die Zeit kommt vom Rendern eines Abschnitts, der jetzt 1 Sekunde statt 100 ms dauert. Wenn ich die gleiche URL in einem neuen Browser Tab öffne, bin ich wieder auf die üblichen 1,5 Sekunden.
Ich habe keine Ahnung warum.
Um es noch seltsamer zu machen:
Ich kann jeden (HTML) Teil des Editors mit AJAX neu laden (re-render), das sieht aus wie
%Vor%In diesem Fall wird der Editor HAML gerendert, aber nur die Teile, die angefordert werden, und wenn ich (AJAX) anfordere
%Vor%Ich bin zurück zu ~ 2 Sekunden! obwohl es viel mehr gibt und komplexe Logik ausgeführt wird.
Ich habe keine Ahnung, wo ich weiter suchen soll, aber ich möchte verstehen, was los ist.
Irgendwelche Ideen?
BEARBEITEN : Setzen Sie die Konsolenausgabe
Erklärung: Diese zu Logs habe ich nach mehreren Öffnen in Tab übernommen und XHR aktualisiert und abgespielt
Ich musste einige (identische SQL-) Zeilen löschen wegen 30k limit
Linien, die so aussehen
%Vor%ist die Ausgabe einer "Timeline" -Methode. Wo Start (in diesem Fall 'Start') nur ein Name ist, ist die Zahl die Zeit (ms) seit dem letzten Aufruf und in Klammern die Zeit bis jetzt. Die optionale "XXXX-Nummer" gibt die Zeit für einen benannten Blockanruf an.
Der Vergleich dieser beiden Dateien zeigt den Unterschied in der Zeile "start with paragroup" und dies ist die erste Zeile in HAML:
%Vor%während "done prepare_paragroup" mehr oder weniger das letzte ist, bevor "paragroup" gerendert wird
Protokoll der Registerkarte (Aktualisieren)
%Vor%Protokoll von XHR:
%Vor%Tags und Links ruby-on-rails haml