2017-11-28 10 views
0

Ich habe eine CakePHP 2.x-App, die den täglichen Verkauf und Betrieb eines Reisebüros/Betreibers abwickelt. Das Verkaufsmodell interagiert mit so ziemlich allen anderen Modellen, da es Kundeninformationen von Kunden, Agenteninformationen von Agenten, Passagierinformationen von Passagieren (nicht immer das Gleiche wie der Kunde), Zahlungsinformationen in Zahlungen, Tourinformationen benötigt in Tours, Flüge Informationen in Flights, etc.CakePHP 2.x Performance - Kann ich die View zum Benutzer bringen, bevor der Controller mit der Arbeit an den Daten fertig ist?

Grundsätzlich, wenn ein Verkaufsmitarbeiter Person zu einem bestimmten Verkauf navigiert, benötigen sie den Bildschirm, um ihnen viele Informationen zu zeigen, die von anderen Modellen kommen.

Dadurch wurde der Bildschirm langsamer und langsamer geladen.

Ich vermeide die Verwendung von Cache, da dies eine Agentur ist, die auf dem Boden landet, was bedeutet, dass sie nicht nur verkaufen, sondern die Operationen selbst durchführen. In dieser Umgebung müssen Informationen immer auf dem neuesten Stand sein.

Also, die Frage ist:

Gibt es eine Möglichkeit für mich, den Blick auf den Benutzer zu bringen, bevor die Steuerung endet jedes Stück Datenverarbeitung?

Like:

<?php 

class SalesController extends AppController { 

    public function show($id) { 


    // Get easy/quick data 
    // Take user to the View 


    // Get the more time consuming data 
    // Feed it to the View as it becomes ready 


    } 

} 

Ich habe nachgedacht, ich sollte nur die Seite mit den einfachen Daten aufrufen und dann die komplizierteren Daten kommen in nach dem Laden, mit einigen Ajax und Javascript, ist aber, dass die beste Nutzung des Rahmens?

Der Bildschirm eines durchschnittlichen Verkaufs dauert etwa 10000 ms, um an dieser Stelle vollständig geladen zu werden. Über 6000 ms dieser Zeit ist Idle-Frame. Das bedeutet, dass mein Controller im Hintergrund arbeitet, oder?

Antwort

1

Dies ist wahrscheinlich nicht möglich, ohne „sollte Controller nie Echodaten“ das Brechen der Regel zu verletzen es alle möglichen Probleme verursachen können, wie die Daten nicht in der Testumgebung zurückgegeben werden, Header nicht gesendet werden, Daten nicht gelesen werden, usw.

Wenn Sie wissen, was Sie tun, und Sie wissen über die Auswirkungen, dann könnten Sie wahrscheinlich damit durchkommen, aber die AJAX-Lösung ist wahrscheinlich die sicherere Lösung.

Auf jeden Fall kann ich nichts tun würde, bevor wo genau und identifizieren, warum genau ist die Zeit damit verbracht, und herauszufinden, ob es einen Weg gibt, die Dinge an der Wurzel des Problems zu beschleunigen!

+0

Ich denke, ich weiß wo und warum: Sales halten das Paket zusammen. Das Paket besteht im Wesentlichen aus allen Flügen, allen Touren, allen Hotels usw. Da diese Daten in verschiedenen Modellen gespeichert werden, sind die Daten nicht standardisiert. Daher geht der Controller in jeden relevanten Datensatz, der zurückgegeben wurde, und führt 2 Aufgaben aus : 1. Ziehen Sie das Datum und die Uhrzeit heraus, damit das endgültige Array in eine chronologische Reihenfolge gebracht werden kann. 2. Ziehen Sie heraus, was in jedem Typ beschreibend sein würde, um die Beschreibung zu erstellen, die dem Benutzer angezeigt wird. – vivipoit

Verwandte Themen