[Frage] MenuProcessor erzeugt hunderte SQL SELECTS

  • freeatweb freeatweb
    Jedi-Meister
    0 x
    254 Beiträge
    4 Hilfreiche Beiträge
    04. 12. 2018, 20:41

    Liebes Forum,

    ich habe bei einem Projekt (TYPO3 8.7) die neuen MenuProcessor eingebunden.

    Die Seite hat ca. 600 Seiten, aufgeteilt in mehreren Menüs.
    Das Rendering der Menüs klappt hervorragend, leider werden jedoch bei Aufruf von Seiten ohne Cache (z.B. &no_cache=1) ca. 1100 Select Statements gesetzt - die meisten davon sind:

    SELECT `uid` FROM `pages` WHERE (`uid` IN (:dcValue1)) AND (`doktype` NOT IN (:dcValue2)) AND ((`pages`.`deleted` = 0) AND ((`pages`.`t3ver_state` <= 0) AND (`pages`.`pid` <> -1)) AND (`pages`.`hidden` = 0) AND (`pages`.`starttime` <= 1543871700) AND ((`pages`.`endtime` = 0) OR (`pages`.`endtime` > 1543871700)) AND ((`pages`.`fe_group` IS NULL) OR (`pages`.`fe_group` = '') OR (`pages`.`fe_group` = '0') OR (FIND_IN_SET('0', `pages`.`fe_group`)) OR (FIND_IN_SET('-1', `pages`.`fe_group`))))

    und

    SELECT `uid`, `pid`, `doktype`, `mount_pid`, `mount_pid_ol`, `t3ver_state` FROM `pages` WHERE (`uid` = :dcValue1) AND (`doktype` <> :dcValue2) AND (`pages`.`deleted` = 0)

    Ladezeiten liegen dadurch bei 10 bis > 20 sekunden.
    Sobald man die Menüs deaktiviert, verringern sich logischerweise die SQL-Abfragen dramatisch - Ladezeit wesentlich besser

    APCu-Cache aktiv.

    Woher kommen diese zahlreichen SQL-Statements? von den MenuProcessors?
    Für mich sieht es so aus, als ob TYPO3 beim GEnerieren des Menüs für jede Seite ein eigenes Select absetzt

    Freue mich auf Ideen/Erfahrungen

    Lg


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2827 Beiträge
    104 Hilfreiche Beiträge
    05. 12. 2018, 09:35

    Beim Generieren von Menüs ist das letztlich auch nötig. Woher soll ansonsten eine Information stammen, ob eine Seite Unterseiten hat bzw. welche Unterseiten?
    Hierbei ist es übrigens egal, ob MenuProcessors oder TypoScript - die Information über die Struktur der Website muss irgendwoher kommen. Und wenn Du TYPO3 das nicht cachen lässt (z.B. &no_cache=1), dann muss TYPO3 sich die Struktur jedesmal neu zusammenbauen.

    Andere Frage: warum darf TYPO3 die *gesamte* Seite nicht cachen? Ändert sich das Menü mit jedem Aufruf? Falls nein, warum darf das Menü nicht gecacht werden?

  • freeatweb freeatweb
    Jedi-Meister
    0 x
    254 Beiträge
    4 Hilfreiche Beiträge
    19. 12. 2018, 12:30

    Hallo Julian,

    vielen Dank für deine Antwort & sorry für meine späte Rückmeldung.

    Ich habe es nun via Caching der Menüs gelöst. Die Menüzustände (Active, etc.) wird via JavaScript umgesetzt.

    Lg

  • freeatweb freeatweb
    Jedi-Meister
    0 x
    254 Beiträge
    4 Hilfreiche Beiträge
    19. 12. 2018, 12:31

    Linktipps:
    https://stichwort.org/typo3/typoscript/mega-menue-mit-cache-optimieren/

    https://gist.github.com/pgampe/cb29bc0fc1111d1370cc

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2827 Beiträge
    104 Hilfreiche Beiträge
    04. 01. 2019, 08:29

    Freut mich, dass ich Dir hier und via Blogbeitrag helfen konnte :-)
    Genau in diese Richtung wollte ich Dich stupsen, wollte zuvor aber noch die Rahmenbedingungen prüfen, ob der Ansatz für Dich auch passt.

  • 1