Attualmente sto affrontando un lento caricamento della pagina con il checkout il più lento di tutti con :
- 28 richieste
- 18,5 KB trasferiti (resto memorizzato nella cache dal disco o dalla memoria)
- Fine: 15.24s (il caricatore scompare e l'utente può fare qualcosa)
- DOMContentLoaded: 6.45s
- Carico: 10.28s
Caricamento della cassa / carrello termina con:
- 29 richieste
- 28,5 KB trasferiti (resto memorizzato nella cache dal disco o dalla memoria)
- Finitura: 6.35s
- DOMContentLoaded: 1.9s
- Carico: 3.79s
mentre un carrello vuoto ha questo:
- 22 richieste
- 8,2 KB trasferiti (resto memorizzato nella cache dal disco o dalla memoria)
- Finitura: 2.78s
- DOMContentLoaded: 1.22s
- Carico: 2,65 secondi
Sto usando Redis per la memorizzazione nella cache e tutte le cache sono attive. Javascript è minimizzato, unito e raggruppato, nonché CSS e HTML. Il server è abbastanza ben posizionato con 8 CPU, 16 GB di RAM e un SSD. Caricare ecc. Non è mai abbastanza alto per essere menzionato. Fondamentalmente il server sta dormendo ...
Ci sono solo ~ 80 prodotti e un negozio. Non utilizziamo la parte di contenuto di Magento. Solo le pagine dei dettagli del prodotto, il checkout e l'area clienti (così come il backend) sono serviti da Magento. Esiste un sistema CMS "di fronte" a Magento che serve pagine in meno di un secondo totale inclusi i media.
Vedo che TTFB per il documento di checkout è già 5.66s. Con il profiler Magento abilitato riesco a trovare ciò che magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body
causa la maggior parte del tempo. Sebbene non sia abbastanza chiaro cosa lo causi esattamente. Qui il profiler non può aiutare molto (almeno io).
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
Ho anche abilitato il profiler del database, ma nessuna query richiede più di 1 ms anche se ci sono quasi 120 chiamate. Ma questo aggiunge solo 120ms allora.
Ho generato un profilo xdebug localmente e posso vedere che la maggior parte del tempo è sprecata nel caricamento automatico. Ma non sono sicuro che sia "normale". Mi chiedo solo perché file_exists sia chiamato così spesso. Come ho avuto l'impressione, tutto è precompilato e memorizzato nella cache. Uso composer dump-autoload -o --apcu
dopo aver compilato di. E ovviamente apc è attivo e funzionante.
Eppure sono bloccato qui per ora. Non riesco a capire perché il TTFB sia già di 5 secondi. E anche se ho risolto che ci sono ancora altri 10 secondi da spiegare e correggere. La mia ipotesi principale è attualmente che queste siano alcune richieste xhr nel blocco in background. Vale a dire. Vedo che i metodi di spedizione stimata iniziano solo dopo un intervallo intensamente lungo di circa 7 secondi a 13 secondi e impiegano circa 647ms. Perché aspetta così tanto per innescarlo? Fino al termine, viene visualizzata l'animazione del caricatore che fa apparire la pagina "bloccata".
Qualsiasi input è molto gradito! Spero in un caricamento della pagina di 2-4 secondi max. come è quello che ho iniziato con.
Modifica: ho corretto il TTFB alto. Come detto sto usando Redis per la memorizzazione nella cache. Anche per la memorizzazione nella cache delle sessioni ma porta a un blocco tra due sessioni concorrenti. In realtà è la richiesta di pagamento e la richiesta di spedizione stimata che porta a un timeout di 5 secondi. Sono tornato alla normale modalità file. Purtroppo questo non ha risolto affatto il lungo tempo di caricamento! La mia ipotesi attuale è che qualcosa fa aspettare i metodi di spedizione preventiva prima di essere chiamato, causando un blocco della pagina. Inoltre, ho cercato di rinviare tutti i JS senza alcuna modifica.
Edit2: Come @ peter-ocallaghan nota che il problema con il caricamento del checkout così lento (+10 secondi) è in realtà solo un problema specifico di Chrome con la console di sviluppo aperta. Il checkout / carrello non sembra essere interessato.