it-swarm.com.de

Skalierung a WP eCommerce Seite

Im Zusammenhang mit dieser Frage .

Jede Empfehlung zu Tools, Plugins zur Optimierung einer großen eCommerce-Site auf WP. Derzeit treffen 1000 Artikel und 5000 weitere Artikel ein. Es scheint, dass sich die Optimierungen von einem Standard-Blog für Tausende von Nutzern unterscheiden würden. Die Anzahl der Stores, die für WP entwickelt werden, nimmt zu, und es erscheint hilfreich, ein Optimierungspaket zusammenzustellen.

MM/RC

5
RealityCramp

Ich habe eine E-Commerce-Website für 55.000 Produkte mit Wordpress und dem Shopp-Plugin entwickelt und kann Ihnen mitteilen, was ich mit MySQL getan habe, um eine bessere Leistung zu erzielen. YMMV und einige (oder alle) davon treffen möglicherweise nicht auf Ihre Situation zu.

Bestimmen Sie, um wie viel Sie Puffer/Caches erhöhen müssen, indem Sie sich die Ausgabe eines SQL-Befehls "show status" ansehen. Es gibt Tools, die diese Ausgabe optimieren. Ich verwende oft nur phpmyadmin, um eine Vorstellung zu bekommen. http://blog.mysqltuner.com/ ist auch eine nützliche Ressource und ein Dienstprogramm.

Stellen Sie sicher, dass der Abfragecache aktiviert ist und groß genug ist, um eine sehr niedrige Punes-Zahl für den Arbeitsspeicher zu haben. Stellen Sie sicher, dass die Anzahl der gelesenen Schlüssel nicht zu hoch ist (dies ist ein relativer Wert). Eine Erhöhung von key_buffer_size kann dabei helfen. Stellen Sie sicher, dass nur wenige temporäre Tabellen erstellt werden. Verringern Sie diese Anzahl, indem Sie tmp_table_size erhöhen.

Aktivieren Sie das Protokoll für langsame Abfragen und protokollieren Sie langsame Abfragen, führen Sie diese Abfragen manuell mit EXPLAIN-Anweisungen erneut aus, fügen Sie Indizes hinzu, ändern Sie die Spaltentypen usw. nach Bedarf. Für eine Abfrage erhielten wir verrückte EXPLAIN-Anweisungen (wie beim Vergleich von vielen, viel mehr Zeilen, als es "hätte" sein müssen), und ein Upgrade auf eine neuere Version von MySQL führte dazu, dass dieselbe Abfrage von MySQL viel besser (und viel schneller) optimiert wurde selbst.

Wenn Sie die Volltextindizierung verwenden, sind InnoDB-Tabellen meines Erachtens keine Option. Aktualisieren Sie Produkte nur nicht in Zeiten hoher Auslastung. Wenn Ihr E-Commerce-Paket dies unterstützt, können Sie Störungen durch Kunden (Leistung oder auf andere Weise) minimieren, indem Sie Änderungen auf Ihrem Staging-Server vornehmen und dann nur die Produkttabellen mit einem Dump von der Bühne in die Produktion verschieben - dieswird nichtArbeiten Sie jedoch ohne zusätzliche Arbeit für den Rest Ihrer Wordpress-Installation.

Wenn Ihr Site-Design und UX dies unterstützen, können Sie die Benutzer in einen "Browsing" -Modus versus einen "Search" -Modus führen (z. B. durch Klicken auf eine Site versus Eingeben von Suchen in das Suchfeld), um die Vorteile einer sehr einfachen Datenbank zu nutzen Level- und Wordpress-Level-Caching.

Laden Sie Ihre Caches vor - einfaches Caching wie Abfrage-Caches und Caching auf Wordpress-Ebene kann auch vorgeladen werden, indem Sie Ihre Site mit wget spinnen. Sie können den Cache auch für Suchvorgänge vorab laden, indem Sie das Benutzersuchverhalten (über Ihre Protokolle) verwenden und diese Anforderungen erneut abrufen, wenn Sie die Caches füllen müssen.

11
bsr

Ich war neugierig auf meinen eigenen Kommentar und habe gelesen, hier bin ich.

Zunächst würde ich W3 Total Cache ausprobieren. Installieren Sie außerdem die Erweiterung APC PHP auf Ihrem Server und legen Sie fest, dass W3 Total Cache diese verwendet. Es wird APC verwenden, um Datenbankobjekte, PHP, zwischenzuspeichern und sogar CSS und JS zu minimieren. Es könnte genug bieten. Vor allem, wenn Sie bereits einige MySQL-Cache enthalten. W3 Total Cache kann auch mit Memcache als Caching-Backend verwendet werden.

Für die Datenbank ist das Cachen der Abfragen sehr nützlich. Ich fand diesen Link und er erklärt, wie er etwas für seinen MU-Blog getan hat. Zitieren:

Der Abfrage-Cache ist ein kleines Feature in MySQL, in dem - in einem dedizierten Bereich im Hauptspeicher - alle Ergebnisse einer Abfrage nach einer Tabelle gespeichert werden, die sich in letzter Zeit nicht geändert hat.

Das heißt, wenn eine Anforderung eingeht, um eine bestimmte Zeile in einer Tabelle abzurufen - und diese Tabelle wurde in letzter Zeit nicht in irgendeiner Weise geändert - und der Cache nicht voll ist und das Löschen/Reinigen erforderlich macht, können die Abfragen/Daten hieraus befriedigt werden Zwischenspeicher. Der Hauptvorteil hierbei ist natürlich die Erfüllung der Anforderung - die Datenbank muss nicht auf die Festplatte (die im Allgemeinen der langsamste Teil des Systems ist) verschoben werden und kann sofort erfüllt werden.

Das ist ziemlich cool und wird sehr hilfreich sein, da die Produkte selbst nicht viel verändern werden. Eine andere Sache, die in dem Artikel erwähnt wird, ist, sicherzustellen, dass Sie genügend Speicher haben, um die Datenbank in Ram zu speichern. Dies wird dazu beitragen, die Abfragen dramatisch zu beschleunigen.

Er spricht auch über die Tabellentypen und verwendet MyISAM über InnoDB für die meist schreibgeschützten Tabellen. Dies ist zwar ein wenig MU-orientiert, könnte aber nützlich sein.

In Bezug auf die Einrichtung der Indizes. Wenn Sie viele davon haben, können sie die Einfügungen verlangsamen und mehr Speicherplatz in Anspruch nehmen. Da ich mir aber nicht vorstellen kann, dass eine große Menge von Produkten regelmäßig hinzugefügt wird, halte ich dies für akzeptabel. Und da der Speicherplatz günstig ist ...

1
Ryan Gibbons