WPML 3.5 incluyó un cambio importante en Traducción de cadenas. Al implementarlo, descubrimos una serie de casos que no se habían manifestado durante el desarrollo. Las actualizaciones posteriores resuelven todos los problemas y mejoran aún más el rendimiento.
Correcciones desde WPML 3.5
- Corregida la excepción no detectada en los casos donde la columna domain_name_context_md5 no existía en la tabla icl_strings
- Corregido el error fatal: Uncaught exception ‘InvalidArgumentException’ with message ‘Argument ID must be numeric and greater than 0 al filtrar los enlaces permanentes
- Corregido el error fatal que aparecía al actualizar: WordPress database error: specified key was too long; max key length is 1000
- Corregido el error fatal: Declaration of WPML_Post_Element::get_type() must be compatible with that of WPML_Translation_Element::get_type() para PHP 5.2
- Eliminada la barra invertida inicial \ para evitar advertencias en versiones de PHP anteriores a 5.3
Mejoras de velocidad
Hemos realizado algunos ajustes en la nueva tabla que almacena qué cadenas aparecen en qué página. Estos cambios reducen significativamente el tamaño de la tabla, mejoran el rendimiento y reducen el consumo de memoria.
- Dividida una tabla grande con redundancias en dos tablas pequeñas y eficientes
- Optimizados los índices de las tablas
- Limitado el posible crecimiento de las tablas para los sitios que usan argumentos de URL, mediante el uso de una lista blanca de argumentos que modifican la selección de páginas
Los resultados
Tomamos algunas medidas del rendimiento de nuestro propio sitio durante las actualizaciones de versión. Puede ver cómo la carga disminuyó, luego aumentó (cuando los índices de las tablas no estaban optimizados) y ahora ha vuelto a bajar por debajo del nivel original.




Los números absolutos en todos estos gráficos son menos significativos, ya que se tomaron en diferentes días de la semana. Los viernes, nuestro tráfico es mucho menor que los lunes. Para entender los cambios, observe la proporción entre los segmentos. Puede ver que, originalmente, el acceso a icl_strings tomaba aproximadamente lo mismo que la obtención de entradas (lo cual no es bueno). Ahora, todos los accesos a la base de datos de WPML toman en promedio 1/3 de las consultas de entradas. Esto es muy significativo, porque WPML necesita cargar una gran cantidad de cadenas, mientras que WordPress solo necesita unas pocas entradas.
Un proceso mejor para la próxima vez
Tuvimos que publicar esta actualización antes de poder ejecutar las mediciones de rendimiento completas, porque incluía cambios para WordPress 4.6. En el futuro, nos aseguraremos de separar las mejoras de rendimiento de la compatibilidad con WordPress. Tan pronto como una nueva versión de WordPress alcance la fase de “release candidate”, haremos una versión menor solo con cambios de compatibilidad. Nos reservaremos tiempo para ejecutar cambios de rendimiento más largos, no relacionados con correcciones de errores y actualizaciones de compatibilidad, y solo los publicaremos cuando estemos muy satisfechos con los resultados.
La próxima versión de WPML seguirá centrándose en la estabilidad y el rendimiento. El 99 % de los sitios que ejecutan WPML funcionan sin problemas ahora, pero hay algunos sitios que usan configuraciones «únicas» del servidor web, PHP o la base de datos. Vamos a abordar esto en la próxima versión menor. También incluiremos algunas optimizaciones de rendimiento más, que harán que tanto el panel de administración como el front-end sean más ligeros.
¿Comentarios?
Si tiene preguntas, ideas y sugerencias, añada sus comentarios. Nos alegra mucho conocer su opinión y hacemos todo lo posible para ofrecerle lo que necesita.

