Rails 4, wie JSON-Rendering zu beschleunigen

8

Ich habe 1500 kleine Objekte für einen Webservice innerhalb einer Rails 4-Anwendung zu rendern. Ich benutze JSON als Format mit Jbuilder für Vorlagen. Ich habe die JSON-Engine bereits in der App-Initialisierung auf OJ geändert:

%Vor%

Ein einzelnes gerendertes json-Objekt sieht so aus:

%Vor%

Aber ich brauche immer noch 150 ms für 101 kb auf meinem localhost, was viel zu langsam ist für die Aufgabe, die ich auf der UI erledigen möchte. Was muss ich tun, um hier schneller zu sein? Welche Dinge sollte ich überprüfen? Ich schätze Hilfe. Beste, Philip

update

Ich habe meine aktiven Datensatzabfragen auf ActiveRecord heruntergesetzt: 77.8ms, trotzdem ist das Rendering der Ansicht immer noch zu langsam

    
dc10 24.10.2014, 16:05
quelle

1 Antwort

6

Sie können das HTTP-Caching mit Varnish untersuchen. Hier ist ein großartiger Artikel, der verschiedene Caching-Techniken (Fragment-Caching, HTTP-Caching, etc.) in Rails 4 beschreibt. Es hat eine gute Erklärung für das Caching von JSON-Antworten.

Rails 4 und Caching

Ссылка

Hier ist ein weiteres auf Rails and Varnish

Ссылка

Lack ein beliebtes Schmuckstück mit Drop-In-Unterstützung für Lack-Caching in Schienen

Wenn Sie näher auf das Thema HTTP-Caching eingehen möchten, hier ist eine wirklich gute Beschreibung

Ссылка

Ryan Bates hat ein hervorragendes Tutorial zu Rails Cast, aber es ist eine Pro Episode

Ссылка

%Vor%

Geocoder-Juwel

Basierend auf einigen Kommentaren möchte ich vorschlagen, den Geocoder Edelstein zu verwenden. Es ist schon eine Weile her und ist sehr gut für die Suche nach Points of Interest optimiert, zum Beispiel was du versuchst. Es macht auch viel mehr.

Räumlicher Index Wenn Sie es bereits ausprobiert haben und nicht zufrieden sind, können Sie bitte einige Details darüber angeben, welche Optimierungen Sie in Ihrer Datenbank verwenden, um die Abfrage zu beschleunigen? Sie können POI-Abfragen erheblich beschleunigen, indem Sie räumliche Indizes für die Tabelle verwenden.

Hier ist ein guter Artikel über räumliche Indizes:

Ссылка

  

Einige Ideen zur Leistungsprüfung

Sie können möglicherweise testen, ob es tatsächlich das Rendern ist, das Sie verlangsamt, indem Sie einen guten Testfall erstellen. Versuchen Sie, nach oben, unten und in der Mitte Ihrer Punktetabelle zu suchen. Auch für eine unterschiedliche Anzahl von Antwortobjekten in Ihrem JSON und eine andere Anzahl von Eigenschaften in Ihrem JSON-Objekt. Im Moment sehe ich, dass lat, lon überflüssig ist. Versuchen Sie, sie zu entfernen und vergleichen Sie Zeiten für eine große Anzahl von Ergebnissen, wenn es tatsächlich das Rendering ist, das Sie verlangsamt, weniger Eigenschaften, schnellere Antworten, die Sie sehen sollten.

Wenn Ihre Eigenschaften (name, st, sy usw.) von Beziehungen statt derselben Tabelle wie Punkte kommen, versuchen Sie, Ihre DB zu demnormalisieren, um zu sehen, ob Sie schnelleres Rendern der Darstellung erhalten.

    
Shaunak 15.12.2014 19:54
quelle