Ich bin derzeit mit einem langsamen Laden der Seite konfrontiert, wobei die Kaufabwicklung die langsamste von allen ist mit :
- 28 Anfragen
- 18,5 KB übertragen (Rest von Festplatte oder Speicher zwischengespeichert)
- Ende: 15.24s (Lader verschwindet und der Benutzer kann etwas tun)
- DOMContentLoaded: 6.45s
- Belastung: 10,28 s
Das Laden der Kasse / des Warenkorbs endet mit:
- 29 Anfragen
- 28,5 KB übertragen (Rest von Festplatte oder Speicher zwischengespeichert)
- Ende: 6,35 s
- DOMContentLoaded: 1.9s
- Belastung: 3,79 s
während ein leerer Wagen dies hat:
- 22 Anfragen
- 8,2 KB übertragen (Rest von Festplatte oder Speicher zwischengespeichert)
- Ende: 2,78s
- DOMContentLoaded: 1.22s
- Belastung: 2,65 s
Ich verwende Redis zum Zwischenspeichern und alle Caches sind aktiv. Javascript wird minimiert, zusammengeführt und gebündelt sowie CSS und HTML. Der Server ist mit 8 CPUs, 16 GB RAM und einer SSD ziemlich gut gelegen. Die Last usw. ist niemals hoch genug, um überhaupt erwähnt zu werden. Grundsätzlich schläft der Server ...
Es gibt nur ~ 80 Produkte und ein Geschäft. Wir verwenden den Inhaltsteil von Magento nicht. Nur Produktdetailseiten, Kasse und Kundenbereich (sowie das Backend) werden von Magento bereitgestellt. Vor Magento befindet sich ein CMS-System, das Seiten in weniger als einer Sekunde einschließlich Medien bereitstellt.
Ich sehe, dass TTFB für das Checkout-Dokument bereits 5,66 Sekunden beträgt. Wenn der Magento-Profiler aktiviert ist, kann ich feststellen, dass dies magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body
die meiste Zeit verursacht. Obwohl es ziemlich unklar ist, was genau es verursacht. Hier kann der Profiler nicht viel helfen (zumindest ich).
magento->routers_match 5.347600 5.347600 1 42,063,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index 5.143997 5.143997 1 15,976,176 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body 5.143980 5.143980 1 15,975,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest 0.000609 0.000609 1 82.464 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest->OBSERVER:checkout_allow_guest 0.000592 0.000592 1 80.944 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT 0.106220 0.035407 3 13,085,544 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_load 0.000666 0.000666 1 136.56 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_xml 0.005658 0.005658 1 174.632 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks 0.099472 0.099472 1 12,755,648 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements 0.099462 0.099462 1 12,902,296 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements 0.091426 0.091426 1 11,885,184 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->EVENT:core_layout_block_create_after 0.000169 0.000003 51 -16.128 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements 0.000609 0.000609 1 52.76 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements 0.000455 0.000455 1 26.952 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after 0.000297 0.000297 1 16.32 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after->OBSERVER:persistent 0.000279 0.000279 1 14.776 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch 0.002972 0.002972 1 116.752 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch 0.002913 0.002913 1 110.192 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor 0.002900 0.002900 1 108.656 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags 0.001175 0.001175 1 77.784 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_varnish 0.000516 0.000516 1 35.056 0
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_builtin 0.000629 0.000629 1 41.08 0
Ich habe auch den Datenbankprofiler aktiviert, aber keine Abfrage dauert länger als 1 ms, obwohl es fast 120 Aufrufe gibt. Das summiert sich dann aber auf nur 120ms.
Ich habe lokal ein xdebug-Profil erstellt und kann feststellen, dass die meiste Zeit beim automatischen Laden verschwendet wird. Aber ich bin mir nicht sicher, ob das "normal" ist. Ich frage mich nur, warum file_exists so oft aufgerufen wird. Da ich den Eindruck hatte, ist alles vorkompiliert und zwischengespeichert. Ich benutze composer dump-autoload -o --apcu
nach dem Kompilieren di. Und natürlich läuft apc.
Trotzdem stecke ich vorerst hier fest. Ich scheine nicht in der Lage zu sein, herauszufinden, warum TTFB bereits 5 Sekunden beträgt. Und selbst wenn ich das gelöst habe, gibt es noch 10 Sekunden zu erklären und zu beheben. Meine derzeitige Hauptvermutung ist, dass dies einige xhr-Anforderungen in der Hintergrundblockierung sind. Dh. Ich sehe, dass Schätzungsversandmethoden erst nach einer sehr langen Lücke von ungefähr 7 Sekunden bei 13 Sekunden beginnen und ungefähr 647 ms dauern. Warum wartet es so lange, um das auszulösen? Bis dies abgeschlossen ist, wird die Loader-Animation angezeigt, sodass die Seite "hängen bleibt".
Jede Eingabe ist sehr willkommen! Ich hoffe auf eine Seitenladung von 2 - 4 Sekunden max. so habe ich angefangen.
Edit: Ich habe den hohen TTFB behoben. Wie gesagt, ich benutze Redis zum Zwischenspeichern. Auch für das Zwischenspeichern von Sitzungen, führt jedoch zu einer Sperrung zwischen zwei gleichzeitigen Sitzungen. Tatsächlich handelt es sich um die Checkout-Anfrage und die Schätzung-Versand-Anfrage, die zu einer Zeitüberschreitung von 5 Sekunden führen. Ich habe die Sitzungen wieder in den normalen Dateimodus versetzt. Leider hat dies die lange Ladezeit überhaupt nicht behoben! Meine derzeitige beste Vermutung ist, dass etwas dazu führt, dass Schätzungsversandmethoden warten, bevor sie aufgerufen werden, was zu einer Blockierung der Seite führt. Zusätzlich habe ich versucht, alle JS ohne jegliche Änderung aufzuschieben.
Edit2: Wie @ peter-ocallaghan feststellt, ist das Problem mit dem so langsamen Laden der Kasse (+10 Sekunden) eigentlich nur ein chromspezifisches Problem beim Öffnen der Dev-Konsole. Kasse / Warenkorb scheint nicht betroffen zu sein.