Menu callback oder REST für bessere Performance?
Eingetragen von rhodes (631)
am 04.06.2015 - 19:28 Uhr in
am 04.06.2015 - 19:28 Uhr in
Hallo zusammen,
ich nutze eine Drupal 7 Installation u.a. als Datenlieferant für ein anderes System s2.
Daten können von s2 auf zwei Arten angefordert werden:
- Über eine REST Schnittstelle
http://meindrupal.de/rest/views/display - Über einen Menu Callback, der in einem eigenen Module definiert wurde
http://meindrupal.de/mein_module_menu_callback
Beide tun ihren Dienst und liefern einen HTML-String zurück.
Die Frage, die mich umtreibt, ist aber, welche der beiden Lösungen die performantere ist. Bei wenigen Zugriffen lässt sich kein Unterschied feststellen. Aber wie sieht es aus, wenn es einmal sehr viele Abfragen sind?
Wird bei einem Aufruf eines Menu callbacks eigentlich der komplette Drupal bootstrap durchgeführt? Und wie ist das bei einem REST Aufruf?
Vielleicht hat jemand ein paar Tipps für mich.
Danke & Grüße
Rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi, die Antwort ist keine ist
am 05.06.2015 - 15:56 Uhr
Hi,
die Antwort ist keine ist die performantere Lösung.
Du liegt richtig damit, dass beide callbacks Drupal bootstrappen.
Performant wäre es, den REST Service ausserhalb von Drupal laufen zu lassen
und die Zugriffe direkt von PHP auf die Datenbank zu machen.
Die benötigten Queries kannst Du Dir im Zweifel vom Devel Modul anzeigen lassen.
Das kann allerdings sehr komplex sein.
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi,
am 05.06.2015 - 19:23 Uhr
ja, das ist bitter, aber es bleibt wohl nichts als direkt auf die DB zuzugreifen.
MfG
rhodes
wenn du schon einen Service nutzt, warum dann display?
am 05.06.2015 - 19:47 Uhr
Den Datenstrom willst du doch eh' selbst aufbereiten.
Nimm das Servicesmodul, und nutze JSON als Transportformat.
Damit brauchst du keine Templates aufbereiten, und auch der Datenstrom ist recht kompakt.
Der bootstrap Prozess muss zwar dennoch laufen, aber das Rendering fällt weg, und die zu transportierende Datenmenge ist zusätzlich geringer, was einen großen Teil der Gesamtperformance ausmachen dürfte.
Grüße
Ronald