[Chiuso] Caricamento lento della pagina link nascosto
Questo è il forum di assistenza tecnica di WPML, il plug-in multilingue di WordPress.
La sua lettura è permessa a tutti, ma la pubblicazione è riservata esclusivamente ai clienti di WPML. Il team di WPML risponde sul forum 6 giorni su 7, 22 ore su 24.
Contesto del problema:
Sto cercando di caricare la pagina edit.php dei prodotti su link nascosto. Ho notato difficoltà nel caricamento, specialmente per pagine di prodotti con molte varianti. Ho ridotto il numero di prodotti per pagina a 5, ma il caricamento richiede ancora circa 2 minuti. Il problema si verifica anche nel frontend su pagine di categorie di prodotti complessi, come link nascosto, che impiega circa 10 secondi a caricare. Ho usato Query Monitor e ho identificato oltre 6000 query, di cui circa 1600 duplicate. Disattivando i plugin WPML, le query si riducono drasticamente.
Sintomi:
La pagina edit.php dei prodotti e le pagine di categorie di prodotti complessi caricano lentamente. Ci sono molte query duplicate quando i plugin WPML sono attivi.
Domande:
Come posso ridurre il tempo di caricamento delle pagine con molte varianti di prodotto?
Perché ci sono così tante query duplicate quando i plugin WPML sono attivi?
Ti elenco le 2 query lente che direttamente sono chiamate dal Plugin: sitepress-multilingual-cms sulla pagina link nascosto:
1.
SELECT translations.translation_id, translations.element_type, translations.element_id, translations.trid, translations.language_code, translations.source_language_code, (
SELECT element_id
FROM wprh_icl_translations as originalTranslation
WHERE originalTranslation.trid = translations.trid and originalTranslation.source_language_code IS NULL ) as original_doc_id, NULLIF(translations.source_language_code, '') IS NULL AS original, translation_status.rid, translation_status.status, translation_status.translator_id, translation_status.needs_update, translation_status.review_status, translation_status.translation_service, translation_status.batch_id, translation_status.timestamp, translation_status.tp_id, translation_status.ate_comm_retry_count, jobs.max_job_id as job_id, jobs.translated, jobs.editor, jobs.editor_job_id, jobs.automatic, jobs.ate_sync_count
FROM wprh_icl_translations as translations
LEFT JOIN wprh_icl_translation_status translation_status
ON translation_status.translation_id = translations.translation_id
LEFT JOIN (
SELECT MAX(job_id) as max_job_id, translated, editor, editor_job_id, automatic, ate_sync_count, rid
FROM wprh_icl_translate_job
GROUP BY job_id ) as jobs
ON jobs.rid = translation_status.rid
WHERE translations.trid IN (
SELECT trid
FROM wprh_icl_translations
WHERE (element_id = 376417
AND element_type = 'post_product')
OR (element_id = 376374
AND element_type = 'post_product')
OR (element_id = 398075
AND element_type = 'post_product')
OR (element_id = 398035
AND element_type = 'post_product')
OR (element_id = 397998
AND element_type = 'post_product') )
AND 1 = 1
2.
SELECT language_code, taxonomy, term_id
FROM wprh_term_taxonomy tt JOIN wprh_icl_translations wpml_translations
ON wpml_translations.element_id = tt.term_taxonomy_id
AND wpml_translations.element_type = CONCAT('tax_', tt.taxonomy)
WHERE tt.taxonomy IN ('product_brand','product_cat','product_tag','product_shipping_class','pa_bocca-di-erogazione','pa_colore','pa_colore-cassetti','pa_colore-copripiletta','pa_colore-poliuretano','pa_colore-rete','pa_colore-struttura-plastiche','pa_corda','pa_dimensioni','pa_finitura','pa_finitura-igienico','pa_gambe','pa_impianto-vasca','pa_legno','pa_meccanismo','pa_metalli','pa_modello','pa_piano','pa_pietra','pa_potenza','pa_rivestimento','pa_schienale','pa_struttura','pa_tensione','pa_tipologia','pa_versione','translation_priority' )
Mentre per quanto riguarda le query duplicate vi mando lo screen di query monitor, in questo caso ad esempio più di 2300 query duplicate, ne riporto di seguito qualcuna:
SELECT language
FROM wprh_icl_strings
WHERE id=221582
LIMIT 1
SELECT t.term_id
FROM wprh_terms AS t
INNER JOIN wprh_term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy IN ('product_cat')
AND t.slug IN ('termoarredi-tubolari-idraulici')
LIMIT 1
SELECT t.term_id
FROM wprh_terms AS t
INNER JOIN wprh_term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy IN ('pa_dimensioni')
AND t.slug IN ('h-2200-x-l-1300-mm')
LIMIT 1
Dell'ultima in particola ci sono moltissime ripetizioni, sembrerebbe una per ogni tassonomia presente nei prodotti sulla pagina.
Ho fatto come hai chiesto, ma la pagina ci mette una vita a caricarsi anche senza WPML attivato, circa 135s. Se una pagina è già lenta di suo con WPML lo sarà per forza di più perché deve filtrare per le varie lingue.
L'avere così tante variazioni è sicuramente un fattore, sempre con WPML disattivato vedo ci sono 5 query lente e tutte hanno a che fare con i metadata di WooCommerce (vedi screen). Però è un problema che va risolto a monte, a prescindere da WPML.
Se mi dici che senza WPML la pagina si carica per es in 10s e con WPML in 150s allora il problema può essere WPML, ma se passa da 135s a 150s rientra nel range del possibile.
Per cui il mio suggerimento è di fare una valutazione delle performance senza WPML, solo nel momento in cui è effettivamente solo WPML a rallentare il sito possiamo fare ulteriori indagini.
L'argomento '[Chiuso] Caricamento lento della pagina link nascosto' è chiuso a nuove risposte.