WPML

Negli ultimi mesi, abbiamo notato che il nostro sito (wpml.org) stava rallentando. All'inizio abbiamo adottato l'approccio drastico di potenziare il server. Quando questo non ha funzionato, ci siamo messi d'impegno e abbiamo analizzato a fondo il problema. Il risultato è la versione di oggi, che ha ridotto il carico della nostra CPU e il tempo di risposta del 70%.

Cosa abbiamo imparato sull'analisi delle prestazioni


Le prestazioni sono sempre state molto importanti per noi. Da anni testiamo la memoria, le query e il tempo di CPU di WPML, migliorandoli a ogni versione. Quello che abbiamo imparato da questo ciclo di sviluppo è che i test statici non rivelano sempre i veri problemi.

Il metodo che usavamo finora per testare le prestazioni consisteva nel:

  • Creare un database di grandi dimensioni con molti articoli, postmeta, categorie e utenti
  • Produrre un elenco delle pagine più “pesanti”
  • Caricarle molte volte, misurare il tempo di caricamento ed eseguirne il profiling

Questo ci indicava le pagine del front-end e dell'area di amministrazione di cui dovevamo eseguire il debug e l'ottimizzazione. Ci siamo assicurati di ridurre il numero di query, evitare le query lunghe e scrivere codice PHP efficiente.

Quindi, cosa mancava?

WordPress e WPML sono un po' più complessi del semplice “richiedi una pagina e aspetta che si carichi”. Tutto passa attraverso il database, che è una risorsa condivisa. Un'azione che il visitatore A esegue sul database può influire sull'esperienza del visitatore B.

Per capire questi colli di bottiglia, abbiamo installato uno strumento chiamato Appoptics sul nostro sito di produzione. Ci ha permesso di misurare quali funzioni e query richiedevano più tempo, in modo da poterne analizzare il motivo.

L'effettivo miglioramento delle prestazioni


Abbiamo scoperto che un'operazione apparentemente innocua nella Traduzione stringhe creava un significativo conflitto di risorse con una query frequente alla tabella delle opzioni da parte di un altro plugin. Se esegui quella chiamata solo 1 milione di volte, non noti alcun problema. Tuttavia, quando altre pagine devono accedere alla tabella delle opzioni, devono aspettare finché le stringhe non smettono di accedervi. L'elenco delle richieste in sospeso cresce, sovraccarica il database e succede il finimondo.
Miglioramento delle prestazioni per wpml.org

Guardando il grafico, puoi vedere che la maggior parte dello sforzo del nostro server era rivolto al database (quella tabella che continuava a bloccarsi e sbloccarsi). Probabilmente puoi indovinare a che ora abbiamo applicato la correzione.

Ma ho altri problemi di prestazioni, potete risolverli?


Quello che abbiamo individuato aiuterà sicuramente non solo wpml.org, ma molti altri siti ad alto traffico che utilizzano WPML. Se hai un sito con un carico molto ridotto, noterai a malapena questo miglioramento. Riguarda solo i siti con molta concorrenza e utenti che fanno molte cose diverse.

È possibile che altri siti possano trarre vantaggio da altre ottimizzazioni delle prestazioni. Ora abbiamo imparato che il modo migliore per svolgere questo lavoro è installare il profiling sul vero sito di produzione, che soffre di scarse prestazioni. Anche se riceviamo una copia del tuo database, non possiamo simulare il tuo traffico. Questo è il motivo per cui tutti i nostri cicli precedenti non avevano individuato questo problema specifico.

A proposito, il nostro ciclo di miglioramento delle prestazioni non ha rivelato colli di bottiglia solo in WPML. Abbiamo corretto quello che abbiamo trovato in WPML, ma abbiamo notato problemi enormi in altre aree. Alcuni li abbiamo corretti noi stessi, altri li abbiamo ottimizzati tramite il database.

Se ti interessa, faccelo sapere e ti aiuteremo a installare l'analisi delle prestazioni sui tuoi siti di produzione. Poi, saremo molto felici di aiutarti ad analizzare i risultati. Se troviamo qualcosa in WPML, lo correggeremo. C'è una buona probabilità che i siti con problemi di prestazioni riscontrino una serie di problemi derivanti da fonti sorprendenti.

Cos'altro c'è di nuovo in WPML 4.2.6

WPML core 4.2.6

  • Aggiunto il filtro wpml_post_edit_meta_box_priority per modificare la priorità del meta box di modifica degli articoli di WPML
  • Risolto un problema con l'aggiornamento dei plugin in caso di installazioni in sottocartelle – ora vengono sempre usati gli URL del sito
  • Salvati gli avvisi solo quando necessario per ridurre le scritture extra nella tabella wp_options
  • Risolto un problema di sicurezza con i link del selettore di lingua

WPML Traduzione stringhe 2.10.4

  • Risolto un problema con l'importazione dei file mo in Traduzione stringhe in modo che la tabella wp_options non venga aggiornata inutilmente

WPML Gestione traduzioni 2.8.5

  • Migliorato lo stile dei controlli di impaginazione nella pagina Lavori di traduzione
  • Risolto un problema con l'assegnazione dei traduttori nella pagina Lavori di traduzione quando la lingua dell'area di amministrazione è diversa dall'inglese
  • Risolto il contenuto errato della colonna “Tradotto da” quando la lingua dell'area di amministrazione è diversa dall'inglese

WPML Media Translation 2.5.2

  • Salvati gli avvisi solo quando necessario per ridurre le scritture extra nella tabella wp_options

WPML CMS Nav 1.5.1

  • Migliorate le prestazioni cancellando la cache solo quando applicabile

Download e aggiornamento


Come sempre, riceverai questo aggiornamento automaticamente per tutti i tuoi siti registrati. Puoi sempre accedere al tuo account WPML per scaricarlo e installarlo manualmente.

Ti consigliamo di eseguire dei backup prima di aggiornare qualsiasi cosa sul tuo sito.

Feedback? Domande? Suggerimenti?


I nostri siti ora sono molto più veloci, ma ci piacerebbe avere notizie dei tuoi siti. Lascia i tuoi commenti e ti risponderemo.

L’hai trovato utile? Condividi questo articolo: