WPML 3.5 enthielt eine umfassende Änderung von String Translation. Als wir damit live gingen, erfuhren wir von einer Reihe von Fällen, die in der Entwicklung nicht auftauchten. In den nachfolgenden Updates wurden alle Fehler behoben und die Leistung weiter verbessert.

Fehlerbehebungen seit WPML 3.5

  • Nicht aufgefallene Ausnahme in Fällen wurde behoben, in denen die Spalte domain_name_context_md5 nicht in der Tabelle icl_strings existierte.
  • Fataler Fehler behoben: ‚InvalidArgumentException‘ mit Meldung ‚Argument-ID muss beim Filtern von Permalinks numerisch und größer als 0 sein
  • Fataler Fehler behoben, der während des Upgrades auftrat: WordPress-Datenbankfehler: der angegebene Schlüssel war zu lang, die max. Schlüssellänge ist 1000
  • Fataler Fehler behoben: Erklärung von WPML_Post_Element::get_type() muss für PHP 5.2 mit dem von WPML_Translation_Element::get_type() kompatibel sein
  • Vorangestellter Backlash entfernt, um Warnungen in PHP vor 5.3 zu vermeiden

Verbesserungen der Geschwindigkeit

Wir haben einige Optimierungen an der neuen Tabelle vorgenommen, die speichert, welche Strings auf welcher Seite erscheinen. Diese Änderungen reduzieren die Tabellengröße beträchtlich, verbessern die Leistung und verringern den Speicherverbrauch.

  • Wir haben eine große Tabelle mit Redundanzen in zwei kleine und effiziente Tabellen aufgespalten.
  • Optimierte Tabellenindexe
  • Wir haben die mögliche Tabellengröße für Seiten begrenzt, die URL-Argumente verwenden, indem wir eine Whitelist an Argumenten einsetzen, die die Seitenauswahl modifizieren.

Die Ergebnisse

Wir haben während der Versions-Updates ein paar Messungen der Leistung unserer eigenen Seite durchgeführt. Sie werden bemerkt haben, wie die Auslastung sich verringerte und dann wieder stieg (als die Tabellenindexe nicht optimiert waren) und nun ist die Leistung wieder da und schneller als das Original.

WPML 3.4 - Das Laden der String Translation dauert länger, da wir viele Strings vorladen

WPML 3.4 – Das Laden der String Translation dauert länger, da wir viele Strings vorladen

Die String Translation ist down, hat aber nun eine große string_pages-Tabelle

Die String Translation ist down, hat aber nun eine große string_pages-Tabelle

Wir haben die string_pages-Tabelle in zwei kleinere aufgespalten, doch ein zusätzlicher Index verlangsamt Auswahlen

Wir haben die string_pages-Tabelle in zwei kleinere aufgespalten, doch ein zusätzlicher Index verlangsamt Auswahlen

Kleinere Tabellen und korrekter Index. Endlich sind wir gut.

Kleinere Tabellen und korrekter Index. Endlich sind wir gut.

Die absoluten Zahlen in all diesen Diagrammen sind weniger wichtig, da sie an verschiedenen Wochentagen erstellt wurden. An Freitagen ist unser Datenverkehr viel langsamer als an Montagen. Um die Änderungen zu verstehen, sehen Sie sich das Verhältnis zwischen den Segmenten an. Sie sehen, dass die Zugriffe auf icl_strings ursprünglich etwa so lange dauerten wie der Abruf von Beiträgen (was nicht gut ist). Jetzt dauert der Zugriff auf alle WPML-Datenbanken durchschnittlich ein Drittel so lange wie Beitragsabfragen. Dies ist sehr wichtig, denn WPML muss ziemlich viele Strings laden, während WordPress nur einige wenige Artikel braucht.

Nächstes Mal ein besserer Prozess

Wir mussten dieses Update veröffentlichen, bevor wir sämtliche Leistungsmessungen ausführen konnten, da es Änderungen für WordPress 4.6 enthält. In Zukunft werden wir darauf achten, Leistungsverbesserungen von der WordPress-Kompatibilität zu entkoppeln. Sobald eine neue WordPress-Version den Status „Veröffentlichungskandidat“ erreicht, geben wir eine kleine Veröffentlichung nur mit Kompatibilitätsänderungen heraus. So haben wir genügend Zeit, längere Leistungsänderungen durchzuführen, die nichts mit Fehlerbehebungen und Kompatibilitäts-Updates zu tun haben, und können diese erst dann veröffentlichen, wenn wir mit den Ergebnissen wirklich zufrieden sind.

Auch in der nächsten WPML-Veröffentlichung wird es um Stabilität und Leistung gehen. 99 % der Seiten, auf denen WPML läuft, laufen jetzt reibungslos, aber es gibt immer noch einige wenige Seiten, die „einzigartige“ Konfigurationen des Webservers, von PHP oder der Datenbank verwenden. Um diese werden wir uns in der nächsten kleinen Version kümmern. Zudem werden wir einige weitere Leistungsoptimierungen einbeziehen, die sowohl den Adminbereich als auch das Front-End verschlanken werden.

Feedback?

Wenn Sie Fragen, Ideen oder Vorschläge haben, fügen Sie bitte Ihre Kommentare hinzu. Wir freuen uns sehr über Ihr Feedback und tun unser Bestes, Ihnen alles zu liefern, was Sie benötigen.