Kategorieliste extrem langsam

  • Joomla Version
    5.1.0
    PHP Version
    PHP 8.3.x
    Hoster
    w4y

    Hallo liebe J!-Gemeinde,


    ich hoffe, dass mir einer von Euch bitte helfen kann, oder mich zumindest in die richtige Richtung schupfen kann.

    Ich hatte ein uraltes J! 3.xxx mit Seblod, das hat ganz gut funktioniert, wird aber auf Grund der uralten PHP Version von meinem Host nicht mehr unterstütz (ganz abgesehen von den Sicherheitsrisiken). Also umziehen auf J!5 und PHP 8.3. Konnte die Felder aus Seblod schön mit Custom Fields nachbauen und über MyPHPAdmin sowohl die Artikel, als auch die Felder gut befüllen. Klappt alles fein, so wie es sein sollte. Aja, Template ist cassiopeia, wo ich nur ein bissi an den Farben herumgespielt habe.


    Nur habe ich mehrere Stellen, wo ich gerne Kategroeilisten ausgeben möchte und das ist einfach mühsam, mehr als 100 kann er nicht ausgeben, weil er dann unglaublich viel Speicher bracuht. Bei 100 ist die Ladezeit auf 7,2.8.6 (!) s und er braucht um die 320 MB.


    Plugins sind nur Phoca Maps & Gallery drauf und die stören das nicht.


    Der Firefox Inspektor meint, dass das Problem die

    afterRenderComponent com_content (298.12MB) (7.11s) ist.


    Cache und GZIP aktiviert, das web_auth deaktiviert und auch sonst sehe ich nichts. Vielleicht damit zusammenhängend: wenn ich einen Suchindex erstellen will bekomme ich ein "unexpected" - immer an der selben Stelle ("1234" von 2657") und Ende. Keine weitere Erklärung dazu...


    Alle anderen Seiten laufen schnell, wie man sich das wünscht, aber die Kategorieliste ist zum wahnsinnig werden.


    Hat wer von Euch eine Idee?

    Vielen Dank und liebe Grüße aus Wien, cassirer

  • also ich hab mich jetzt weiter herumgespielt und eine Möglichkeit gefunden: wenn ich statt des Menüpunkts Kategorieliste ein Modul Beiträge Katergorie über einen Einzelbeitrag einbinde, habe ich eine Ladezeit von 507ms und 41 MB statt 8.3 sec und 356 MB.


    Das ist der Query, der den Stress verursacht

    SELECT `a`.`id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END AS `publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`metadata`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`featured`,`a`.`language`,LENGTH(`a`.`fulltext`) AS `readmore`,`a`.`ordering`,`fp`.`featured_up`,`fp`.`featured_down`,CASE WHEN `c`.`published` = 2 AND `a`.`state` > 0 THEN 2 WHEN `c`.`published` != 1 THEN 0 ELSE `a`.`state` END AS `state`,`c`.`title` AS `category_title`,`c`.`path` AS `category_route`,`c`.`access` AS `category_access`,`c`.`alias` AS `category_alias`,`c`.`language` AS `category_language`,`c`.`published`,`c`.`published` AS `parents_published`,`c`.`lft`,CASE WHEN `a`.`created_by_alias` > ' ' THEN `a`.`created_by_alias` ELSE `ua`.`name` END AS `author`,`ua`.`email` AS `author_email`,`uam`.`name` AS `modified_by_name`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`
    FROM `jos_content` AS `a`
    LEFT JOIN `jos_categories` AS `c` ON `c`.`id` = `a`.`catid`
    LEFT JOIN `jos_users` AS `ua` ON `ua`.`id` = `a`.`created_by`
    LEFT JOIN `jos_users` AS `uam` ON `uam`.`id` = `a`.`modified_by`
    LEFT JOIN `jos_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id`
    LEFT JOIN `jos_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id`
    WHERE `a`.`access` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4) AND `c`.`access` IN (:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8) AND `c`.`published` = 1 AND `a`.`state` IN (:preparedArray9,:preparedArray10) AND `a`.`catid` = :categoryId AND `a`.`language` IN (:preparedArray11,:preparedArray12)
    ORDER BY c.lft, a.title, a.created LIMIT 100


    Falls jemand von Euch doch noch eine Lösung findet, bin ich dankbar, weil ich ja gerne verstehen würde.


    Beste Grüße, C