WPML 3.5 includeva un importante cambiamento in Traduzione stringhe. Quando lo abbiamo reso disponibile, siamo venuti a conoscenza di una serie di casi che non si erano presentati durante lo sviluppo. Gli aggiornamenti successivi risolvono tutti i problemi e migliorano ulteriormente le prestazioni.
Correzioni dalla versione 3.5 di WPML
- Corretta l’eccezione non gestita nei casi in cui la colonna domain_name_context_md5 non esisteva nella tabella icl_strings
- Corretto l’errore fatale: Uncaught exception ‘InvalidArgumentException’ con il messaggio ‘Argument ID must be numeric and greater than 0’ durante il filtraggio dei permalink
- Corretto l’errore fatale che appariva durante l’upgrade: WordPress database error: specified key was too long; max key length is 1000
- Corretto l’errore fatale: Declaration of WPML_Post_Element::get_type() must be compatible with that of WPML_Translation_Element::get_type() per PHP 5.2
- Rimosso il backslash iniziale \ per evitare avvisi in PHP prima della versione 5.3
Miglioramenti della velocità
Abbiamo apportato alcune modifiche alla nuova tabella che memorizza quali stringhe appaiono in quale pagina. Queste modifiche riducono in modo significativo le dimensioni della tabella, migliorano le prestazioni e riducono il consumo di memoria.
- Suddivisa una grande tabella con ridondanze in due tabelle piccole ed efficienti
- Ottimizzati gli indici delle tabelle
- Limitata la possibile crescita della tabella per i siti che usano argomenti URL, utilizzando una whitelist di argomenti che modificano la selezione della pagina
I risultati
Abbiamo effettuato alcune misurazioni delle prestazioni del nostro sito durante gli aggiornamenti di versione. Puoi vedere come il carico sia diminuito, poi sia salito (quando gli indici delle tabelle non erano ottimizzati) e ora sia tornato al di sotto del valore originale.




I numeri assoluti in tutti questi grafici sono meno significativi, perché sono stati presi in giorni diversi della settimana. Il venerdì, il nostro traffico è di gran lunga inferiore rispetto al lunedì. Per capire i cambiamenti, guarda la proporzione tra i segmenti. Puoi vedere che inizialmente l’accesso a icl_strings richiedeva all’incirca lo stesso tempo del recupero degli articoli (il che non è un bene). Ora, tutti gli accessi al database di WPML richiedono in media 1/3 delle query degli articoli. Questo è molto significativo, perché WPML ha bisogno di caricare un sacco di stringhe, mentre WordPress ha bisogno solo di pochi articoli.
Un processo migliore la prossima volta
Abbiamo dovuto rilasciare questo aggiornamento prima di poter eseguire le misurazioni complete delle prestazioni, perché includeva modifiche per WordPress 4.6. In futuro, ci assicureremo di separare i miglioramenti delle prestazioni dalla compatibilità con WordPress. Non appena una nuova versione di WordPress raggiungerà la fase di “release candidate”, faremo una release minore con le sole modifiche di compatibilità. Ci prenderemo il tempo per eseguire modifiche alle prestazioni più lunghe, non correlate alle correzioni di bug e agli aggiornamenti di compatibilità, e le rilasceremo solo dopo essere pienamente soddisfatti dei risultati.
La prossima versione di WPML continuerà a concentrarsi su stabilità e prestazioni. Il 99% dei siti che utilizzano WPML ora funziona senza problemi, ma ci sono alcuni siti che usano configurazioni “uniche” del server web, di PHP o del database. Ce ne occuperemo nella prossima release minore. Includeremo anche alcune ulteriori ottimizzazioni delle prestazioni, che renderanno più snelli sia l’area di amministrazione che il front-end.
Feedback?
Se hai domande, idee e suggerimenti, aggiungi i tuoi commenti. Siamo molto felici di ricevere il tuo feedback e facciamo del nostro meglio per offrirti ciò di cui hai bisogno.

