WPML 3.5 enthielt eine große Änderung an der String-Übersetzung. Als wir damit live gingen, erfuhren wir von einer Reihe von Fällen, die während der Entwicklung nicht aufgetreten waren. Die nachfolgenden Updates beheben alle Probleme und verbessern die Performance weiter.
Fehlerbehebungen seit WPML 3.5
- Nicht abgefangene Ausnahme in Fällen behoben, in denen die Spalte domain_name_context_md5 in der Tabelle icl_strings nicht existierte
- Fatal error behoben: Uncaught exception ‚InvalidArgumentException‘ with message ‚Argument ID must be numeric and greater than 0 beim Filtern von Permalinks
- Fatal error behoben, der während des Upgrades auftrat: WordPress database error: specified key was too long; max key length is 1000
- Fatal error behoben: Declaration of WPML_Post_Element::get_type() must be compatible with that of WPML_Translation_Element::get_type() für PHP 5.2
- Führenden Backslash \ entfernt, um Warnungen in PHP-Versionen vor 5.3 zu vermeiden
Geschwindigkeitsverbesserungen
Wir haben einige Anpassungen an der neuen Tabelle vorgenommen, die speichert, welche Strings auf welcher Seite erscheinen. Diese Änderungen reduzieren die Tabellengröße erheblich, verbessern die Performance und verringern den Speicherverbrauch.
- Eine große Tabelle mit Redundanzen in zwei kleine und effiziente Tabellen aufgeteilt
- Tabellenindizes optimiert
- Mögliches Tabellenwachstum für Websites, die URL-Argumente verwenden, durch die Nutzung einer Whitelist von Argumenten begrenzt, die die Seitenauswahl verändern
Die Ergebnisse
Wir haben während der Versions-Updates einige Messungen der Performance unserer eigenen Website vorgenommen. Sie können sehen, wie die Auslastung sank, dann anstieg (als die Tabellenindizes nicht optimiert waren) und jetzt wieder zurückgegangen ist und unter dem ursprünglichen Wert liegt.




Die absoluten Zahlen in all diesen Diagrammen sind weniger aussagekräftig, da sie an verschiedenen Wochentagen erfasst wurden. Freitags ist unser Traffic viel geringer als montags. Um die Änderungen zu verstehen, betrachten Sie das Verhältnis zwischen den Segmenten. Sie können sehen, dass der Zugriff auf icl_strings ursprünglich ungefähr so lange dauerte wie das Abrufen von Beiträgen (was keine gute Sache ist). Jetzt nehmen alle Datenbankzugriffe von WPML im Durchschnitt 1/3 der Beitragsabfragen in Anspruch. Dies ist sehr bedeutsam, da WPML eine ganze Menge Strings laden muss, während WordPress nur wenige Beiträge benötigt.
Ein besserer Prozess beim nächsten Mal
Wir mussten dieses Update veröffentlichen, bevor wir die kompletten Performance-Messungen durchführen konnten, da es Änderungen für WordPress 4.6 enthielt. In Zukunft werden wir sicherstellen, dass Performance-Verbesserungen von der WordPress-Kompatibilität entkoppelt werden. Sobald eine neue Version von WordPress den Status „Release Candidate“ erreicht, werden wir ein Minor-Release veröffentlichen, das nur Kompatibilitätsänderungen enthält. Wir werden uns Zeit für weitreichendere Performance-Änderungen nehmen, die unabhängig von Fehlerbehebungen und Kompatibilitäts-Updates sind, und diese erst veröffentlichen, wenn wir mit den Ergebnissen sehr zufrieden sind.
Beim nächsten Release von WPML wird es weiterhin um Stabilität und Performance gehen. 99 % der Websites, auf denen WPML läuft, funktionieren jetzt reibungslos, aber es gibt einige wenige Websites, die „einzigartige“ Konfigurationen des Webservers, von PHP oder der Datenbank verwenden. Wir werden uns in dem kommenden Minor-Release darum kümmern. Wir fügen auch einige weitere Performance-Optimierungen hinzu, die sowohl den Admin-Bereich als auch das Frontend schlanker machen werden.
Feedback?
Wenn Sie Fragen, Ideen und Vorschläge haben, hinterlassen Sie bitte Ihre Kommentare. Wir freuen uns sehr über Ihr Feedback und tun unser Bestes, um das zu liefern, was Sie benötigen.

