Wie kann die Antwortzeit des Servers verbessert werden?

17

Was kann ich tun, außer ein Cache-Plugin wie jotcache zu verwenden, um die Serverantwortzeit meiner Website zu verbessern ?

Ich habe bereits alle inaktiven Artikelmodule, Plugins und Komponenten entfernt. Kann ich noch etwas tun, um sie zu verbessern?

Ich spreche von der Zeit, bevor der Client (Browser) eine Antwort auf seine Anfrage erhält . Und nicht die Zeit, zu der die Seite geladen wird.

Web-Tiki
quelle
Die Zeit bis zur Antwort ist die Zeit, bevor das PHP-Dokument fertig ist. Sie sollten sich also SQL- und PHP-Aufrufe ansehen und dann die HTML-Fragen zwischenspeichern, die ich vorschlagen würde
tristanbailey
Wenn Sie die Antwortzeit des Servers angeben, ist dies die Antwort des Servers zum Zeitpunkt der ersten Anforderung oder die Zeit, die der Server benötigt, um die Seite vorzubereiten und bereitzustellen? Führen Sie Ihre Website durch den Pingdom-Geschwindigkeitstest und veröffentlichen Sie die Ergebnisse. Dann können wir Ihnen spezifische Lösungen für das eigentliche Problem anbieten.
Brent Friar

Antworten:

25

Sie können mehrere Schritte ausführen, um die Leistung auf der Serverseite zu erhöhen. Beachten Sie, dass einige davon mit den meisten gemeinsam genutzten Hosts nicht funktionieren. Für eine gute Leistung ist normalerweise eine feinkörnigere Steuerung erforderlich.

Wie bei allen Optimierungen sollten Sie die Auswirkungen auf die Leistung Ihrer Website messen. Für grundlegende Optimierungen sind Tools wie PageSpeed und YSlow hilfreich (ich empfehle die Firefox-Versionen). Zum besseren Verständnis müssen Sie die tatsächlichen Reaktionszeiten Ihres Live-Systems über einen bestimmten Zeitraum messen.

PHP

  1. Aktivieren Sie die Opcode-Zwischenspeicherung

    Dies ist wahrscheinlich die größte Maßnahme, mit der Sie die Leistung Ihrer Website steigern können. Ich empfehle entweder OpCache oder APC . Die Konfiguration dieser Caches kann für eine noch höhere Leistung auf der Grundlage der spezifischen Anforderungen der Server und Standorte optimiert werden. Die einfache Installation ist jedoch bereits ein enormer Schub.

  2. Aktualisieren Sie die PHP-Version

    Neuere PHP-Versionen bringen regelmäßig Leistungsverbesserungen mit sich. Darüber hinaus gibt es eine Reihe von Fällen, in denen Joomla unter einer neueren PHP-Version besseren Code verwenden kann. Ab heute sollten Sie keine ältere PHP-Version als PHP 5.4 verwenden, wenn Sie Wert auf Leistung legen.

  3. PHP-Einstellungen

    Achten Sie bei älteren PHP-Versionen (<= 5.3) darauf, diese auszuschalten register_globalsund magic_quotes_gpcfür eine kostenlose Leistung zu gewinnen. Bei PHP> = 5.6 always_populate_raw_post_datazu -1 wechseln .

  4. PHP-Erweiterungen

    Joomla enthält Code zur Umgehung fehlender PHP-Erweiterungen. Dies ist immer langsamer als diese Erweiterungen. Für eine ordentliche Leistung Verbesserung installieren Sie die folgenden Erweiterungen: mbstring, zip,ftp

Webserver

  1. Gzip aktivieren

    Durch Aktivieren der serverseitigen Komprimierung wird Bandbreite gegen CPU-Ressourcen ausgetauscht. Für die meisten Sites da draußen ist dies der richtige Anruf. Achten Sie darauf, nur Textdaten zu komprimieren. Wenn Sie Binärdaten komprimieren, erhalten Sie den CPU-Treffer ohne die Bandbreitenvorteile. Sie können die Komprimierung auch in den Joomla-Einstellungen aktivieren. Es ist jedoch besser, wenn Sie dies dem Server überlassen.

  2. Statische Ressourcen vorkomprimieren

    Ich spreche nicht von Minfikation (obwohl dies auch hilft), aber Sie können Nginx und Apache so konfigurieren, dass bereits komprimierte Ressourcen auf dem Server gespeichert werden, wodurch der CPU-Hit durch die GZIP-Komprimierung effektiv beseitigt wird. Bonuspunkte: Verwenden Sie Zopfli für noch kleinere Dateien.

  3. Verwenden Sie FastCGI für PHP

    Insbesondere sollten Sie verwenden php-fpm. Dies verhindert das Starten von PHP, wenn der Browser eine Nicht-PHP-Datei anfordert.

  4. Verwenden Sie geeignete Cache-Header

    Durch die Verwendung des ExpiresHeaders können die erforderlichen Serverressourcen erheblich reduziert werden. Immerhin ist die schnellste Anfrage die, die noch nie gemacht wurde.

Apache

Im Allgemeinen würde ich empfehlen, Nginx für Websites mit hoher Leistung zu verwenden. Wenn Sie Apache aus irgendeinem Grund unbedingt verwenden müssen, habe ich einen Bonus-Tipp erhalten:

  1. Deaktivieren Sie AllowOverride

    Einstellung AllowOverrideauf Noneverhindert viele Platten-E / A und

Joomla

  1. Verwenden Sie nicht den FTP-Modus

    Ihre Benutzer, die die Site lesen, sind davon zwar nicht betroffen, einige Vorgänge wie die Installation von Erweiterungen werden jedoch verlangsamt.

  2. Deaktivieren Sie nicht verwendete Erweiterungen

    Dies gilt insbesondere für Plugins, von denen viele bei jeder Anfrage ausgeführt werden. Das Deaktivieren von Menüs und Komponenten ist hauptsächlich hilfreich, wenn Sie verfügbare Erweiterungen und Menütypen auflisten. Nehmen Sie sich auch 5 Minuten Zeit, um die Erweiterungen zu durchlaufen, die mit dem Joomla-Core geliefert werden, und deaktivieren Sie diejenigen, die Sie nicht verwenden.

  3. Deaktivieren Sie Inhalte vorbereiten

    Wenn Sie viele benutzerdefinierte Module verwenden ( mod_customnicht benutzerdefiniert wie in selbst geschrieben), überprüfen Sie, ob Sie in diesen die Option Inhalte vorbereiten deaktivieren können. Dies spart einige Verarbeitungsschritte.

  4. Caching verwenden

    Wenn Sie die Leistung ernst nehmen, sollten Sie das Caching aktivieren. Besonders nützlich für das Lesen schwerer Websites mit vielen anonymen Benutzern. Angemeldete Benutzer umgehen den größten Teil des Caches. Wenn Sie viele davon haben, ist der Effekt nicht so groß.

  5. Verwenden Sie einen alternativen Sitzungshandler

    Mit einem alternativen Sitzungshandler können Sie Ihre Datenbank für wichtigere Dinge freigeben. Ich würde die Datei (in den Joomla-Einstellungen verwirrenderweise "Keine" genannt) nicht empfehlen, da dies die Festplatten-E / A erneut erhöht. Die Verwendung von APC ist möglicherweise das Schnellste, erhöht jedoch das Risiko, dass alle Sitzungsdaten verloren gehen. Der rechte Mittelweg ist Memcache. Dies erfordert zwar einen zusätzlichen Prozess, ist jedoch zuverlässiger als APC und viel schneller als das Speichern aller Daten in der Datenbank

  6. Halten Sie Ihre Website einfach

    Benötigen Sie diesen Facebook-Button wirklich? Was ist mit dieser süßen Ikone, die niemand sieht, weil sie teilweise hinter einem Banner versteckt ist? Je weniger Ihre Website angezeigt wird, desto schneller ist sie. Verwenden Sie nach Möglichkeit auch CSS3 anstelle von Bildern.

Sonstiges

  1. Setze ein Favicon

    Dank einer Entscheidung, die auf Internet Explorer 4.0- Browser zurückgeht, wird eine Anforderung an eine Datei favicon.icogesendet, die aufgerufen wird, wenn ein Benutzer Ihre Website besucht. Wenn Sie keine haben, führt dies zu unnötigen E / A-Vorgängen, da 404-Antworten nicht zwischengespeichert werden. Geben Sie entweder das Symbol Ihrer Site mit einem HTML-Meta-Tag an oder fügen Sie eine Datei hinzu, die im Webstamm aufgerufen wird favicon.ico. Möchtest du kein Favicon? Platzieren Sie an dieser Stelle ein transparentes PNG mit einer Größe von 1x1 Pixel. Beachten Sie, dass die Erweiterung noch vorhanden sein muss .ico.

  2. Optimieren Sie Ihre Bilder

    Es ist erstaunlich, welche Einsparungen durch die Optimierung von Bildern erzielt werden können, insbesondere von PNG-Dateien. Es gibt eine Vielzahl von Tools für jedes Betriebssystem. Ich persönlich verwende ImageOptim, das für OS X verfügbar ist. Die Kernimages von Joomla sind bereits optimiert, gehen aber Ihre eigenen Images durch, insbesondere Vorlagen sind wichtig. Sie können auch die von Ihnen verwendeten Erweiterungen überprüfen. Wenn es sich um Open Source handelt, warum tragen Sie keine Pull-Anfrage mit neu optimierten Bildern bei?

Der Fortgeschrittene

Wenn Sie wirklich alles geben wollen, sollten Sie in Betracht ziehen, den Lack vor Ihre Website zu stellen. Es speichert Anfragen auf Ihrer Site zwischen und bedient sie, wenn möglich, aus dem eigenen Cache, ohne Joomla zu treffen. Es ist ein komplexes Werkzeug, aber mit viel Kraft. Joomla wird erweiterte Funktionen wie Edge Side Includes (ESI) nicht nutzen, aber Ihren eigenen Code.

Rouven Weßling
quelle
8
Das scheint ... eher unfreundlich. Nur zu Ihrer Information, ich habe das gerade geschrieben, der Text wurde in keiner Weise vorbereitet. Fühlen Sie sich frei, es zu googeln. Denken Sie daran, Antworten sollten nicht nur dem ursprünglichen Fragesteller helfen, sondern auch zukünftigen Benutzern, die sich hier auch zurechtfinden.
Rouven Weßling
13

Eine GROSSE Sache, die Sie tun können, um die Antwortzeiten für Ihre Site zu verbessern, ist die Aktualisierung Ihrer Moduleinstellungen. Benutzerdefinierte Module (mit mod_custom) haben eine Option zum Aktivieren / Deaktivieren der Inhaltsvorbereitung. Auf diese Weise können Sie Inhalts-Plugins für den Dateninhalt in Ihrem benutzerdefinierten Modul ausführen. Es ist bei richtiger Verwendung leistungsstark, verlängert jedoch die Renderzeit der Modulausgabe. Wenn Sie nicht tatsächlich ein Inhalts-Plugin in Ihrem benutzerdefinierten Modulinhalt verwenden, ist es am besten, dieses zu deaktivieren. Wenn Sie dies tun, wird die Renderzeit des Moduls verkürzt.

Screenshot der Einstellung: Bildbeschreibung hier eingeben

Hinweis: Wenn meine Antwort Ihnen geholfen hat, klicken Sie bitte auf das Häkchen links, um die Antwort zu akzeptieren.

Don Gilbert
quelle
3
Ich habe den Abschnitt zum Vorbereiten von Inhalten noch nie gesehen. Für welche Joomla-Version gilt das?
TryHarder
1
Wenn es eingeschaltet ist, können Plugins für den Inhalt ausgeführt werden. Wenn Sie also Funktionscodes für Modulpositionen oder andere Plugin-Funktionscodes in das benutzerdefinierte HTML-Textfeld einfügen, werden diese nicht angezeigt. Sie sehen zB "{tag_name}" auf der Website, nicht die vorbereitete Version
tristanbailey
2
Die Option "Inhalte vorbereiten" ist in Joomla 2.5 und 3.x enthalten. Die Standardeinstellung ist "Nein".
Neil Robertson
8

Ich gehe davon aus, dass Sie Ihre Website mit Google Page Speed ​​betrieben haben und in der Tat versuchen, die Antwortzeit der Seite zu verkürzen, dh die Zeit, die Ihr Markup benötigt, um an den Browser gesendet zu werden.

Die wahrscheinlichsten Schuldigen hierfür sind schwere Anfragen. Schalten Sie das Debugging ein und sehen Sie sich den unteren Rand der Seite an, um herauszufinden, welche Abfragen am umfangreichsten sind, und entfernen oder reduzieren Sie sie. Sie können auch die langsamen Abfrageprotokolle Ihres MySQL-Servers verwenden.

Das nächste, was Sie sich ansehen können, ist das Zwischenspeichern. Abhängig von der Art der Site können Sie das konservative oder progressive Caching aktivieren. Progressive soll auf Websites verwendet werden, die keine benutzerbezogenen Funktionen haben.

Ashwin Date
quelle
Können Sie Tipps oder Screenshots dazu geben, wie schwere Anfragen aussehen? Gibt es eine Schwelle zu erreichen?
David Fritsch
Das hängt wirklich von Ihrer Anwendung ab. Jede Abfrage, die im langsamen Abfrageprotokoll landet (in dem unter normalen Einstellungen alle Abfragen protokolliert werden, deren Ausführung mehr als 1 Sekunde dauert), ist jedoch ein guter Kandidat für das Aufbrechen und / oder Einfügen in einen Cache. Eine andere Sache, die albern klingt, aber stellen Sie sicher, dass alle Abfragen ein LIMIT haben.
Ashwin Date
6

Die Dinge, von denen ich weiß, dass sie helfen können (von denen die meisten aufgelistet wurden), sind folgende:

  1. Caching
  2. Komprimierung (gzip Ihre CSS- und JS-Dateien)
  3. Dateien kombinieren (alle Ihre CSS-Dateien werden zu einer Datei kombiniert)
  4. Bilder und Dateien auf ein CDN laden.

Ich habe eine Kombination aus dem eingebauten Joomla-Cache (oder sogar APC-fähig auf dem Server) und Plugins wie dem Rockbooster-Plugin von gzip oder dem Raketenthema verwendet. Ich benutze auch ein CDN-Plugin für Nicht-Nummern mit einem Amazon-Konto.

Es hilft auf jeden Fall, aber Sie müssen Ihre Site beobachten und den Cache für Komponenten deaktivieren, bei denen Probleme auftreten. Ich musste CiviCRM auf unserer Seite umgehen, weil es nicht gut mit Caching zu tun hatte. Joomla wird mit einem Cachecontrol-Plugin ausgeliefert, das damit umgehen kann.

Brian Peat
quelle
2
Kombinieren und komprimieren Sie Ihre Bilder, wenn möglich. Sprites können Dutzende von Anfragen pro Seite speichern.
ContextSwitch
Ich vergesse immer Sprites. :)
Brian Torf
Beachten Sie Folgendes in Bezug auf Sprites: Hintergrundbilder werden nicht angezeigt, wenn Windows in den kontrastreichen Modus wechselt. Während dieses Verhalten für allgemeine Grafiken erwünscht ist, ist es ein Problem für Steuerelemente, die vom Benutzer angeklickt werden müssen - sie verschwinden einfach (Beispiel: Abstimmungsschaltflächen auf dieser Site)
miroxlav
Heh Brian Peat, ich frage mich, ob Sie vielleicht daran interessiert sind, uns beim Start einer CiviCRM-Site bei StackExchange zu helfen. Wir brauchen Committer, die auf einer anderen StackExchange-Website über 200 Reputationen haben: area51.stackexchange.com/proposals/77367/civicrm Prost!
Joe Murray
Ich werde einen Blick darauf werfen. Dies war alles Joomla-basiert und ich habe keine Programmierung durchgeführt, aber ich könnte bei grundlegenden Fragen helfen.
Brian Peat
4

Sie sollten sich auch mit der Reduzierung lokaler Ressourcen und dem richtigen Zwischenspeichern befassen. Eine Sache, die Sie tun können, ist die Verwendung von CDN-Plugins. Hier sind zwei, die ich empfehlen würde:

'corePHP' jomCDN - https://www.corephp.com/joomla-products/jomcdn

NoNumbers CDN Für Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Auch wenn keines der oben genannten Probleme zu lösen scheint, liegt möglicherweise ein tieferes Problem vor - möglicherweise in Ihrer Vorlage, auf dem Server selbst oder in anderen Dingen. In diesem Fall ist es möglicherweise am besten, jemanden einzustellen, der das Problem sucht und es für Sie löst.

Steven Pignataro
quelle
3

Sie können diesen Code auch in Ihrer .htaccess-Datei verwenden:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
معاملات فصلی
quelle
das scheint interessant, kannst du erklären, was es tut?
Web-Tiki
@ Web-Tiki Es ist Einstellung läuft Header ab. Abgelaufene Header teilen dem Browser mit, ob eine bestimmte Datei vom Server angefordert oder aus dem Cache des Browsers abgerufen werden soll. Die gesamte Idee hinter Expires Headers besteht nicht nur darin, die Anzahl der Downloads vom Server zu verringern (das ständige Herunterladen derselben Datei, wenn sie nicht geändert wurde, verschwendet wertvolle Ladezeit), sondern auch die Anzahl der HTTP-Anforderungen für den Server zu verringern. REFERENCE gtmetrix.com/add-expires-headers.html
TryHarder
2

Ich habe mehr als Hunderte von Websites mit Joomla!

In den meisten Fällen denken die Leute, dass Joomla stark auf dem Server arbeitet, aber den von mir durchgeführten Analysen zufolge ist es das Wichtigste, Ihre Website SCHNELL zu halten, die BILDER und JS / CSS zu OPTIMIEREN.

Verwenden Sie keine Joomla-Editoren wie JCE, um nur die Größe des Bildes zu ändern. Verwenden Sie Bildeditoren wie Photoshop oder einen anderen Editor, um Ihre Bilder auf die gewünschte Größe zu bringen!

Verwenden Sie JS / CSS-Komprimierungswerkzeuge.

Wir verwenden immer Pingdom Tools, um die Geschwindigkeit der Website zu analysieren, und wir verwenden die integrierte Funktion von T3 Framework, um JS / CSS zu optimieren!

Gev Balyan
quelle
Welche Tools verwenden Sie für die JS / CSS-Komprimierung? Gibt es Empfehlungen, wie jemand seine Website analysieren könnte, wie Sie es für Ihre Websites getan haben?
David Fritsch
Wir verwenden immer Pingdom Tools, um die Geschwindigkeit der Website zu analysieren, und wir verwenden die integrierte Funktion von T3 Framework, um JS / CSS zu optimieren!
Gev Balyan
2
Ich habe JCH Optimize auch erfolgreich eingesetzt, um einen Großteil der Komprimierung und Minimierung zu erreichen. Eine andere Möglichkeit ist die Verwendung von mod_pagespeed von Apache, das die meisten Empfehlungen von Google Pagespeed im Grunde umsetzt.
Ashwin Date
2
Alles gute Werkzeuge. @GevBalyan, ich würde empfehlen, der Antwort solche Dinge mit Links hinzuzufügen. Spart Menschen etwas googeln! Sie können diese Antwort sogar bearbeiten, um sie dieser hinzuzufügen. :)
David Fritsch
Das Komprimieren von Tools, die nicht im Cache gespeichert werden, kann die Serverantwortzeit verlängern, da die Serverantwort dadurch schneller verarbeitet wird.
Don Gilbert
1

Haben Sie nicht verwendete Plugins entfernt? Joomla muss jedes veröffentlichte Plugin für Ereignisse laden und verarbeiten, die in einer Anfrage ausgelöst werden.

Sie müssen wissen, welche Erweiterungen Sie installiert haben und wie sie mit Joomla! Interagieren.

Viele Erweiterungen installieren Plugins, die Inhalte, System- oder Benutzeraktivitäten verwalten, um Codefunktionen zu initiieren. Einige von ihnen können überflüssig sein.

Ich weiß, dass k2 viele Plugins installiert, die auf sprachbezogene Ereignisse reagieren und für Websites in einer Sprache keine echte Ausgabe liefern. Das Aufheben der Veröffentlichung dieser Plugins kann die Verarbeitungszeit verkürzen.

Joomsavvy
quelle
Kannst du mehr darüber reden? Was meinen Sie mit "ausgelösten Ereignissen"? Wie kann ich feststellen, welche Ereignisse ausgelöst werden?
David Fritsch
1
Gute Frage. Sie müssen wissen, welche Erweiterungen Sie installiert haben und wie sie mit Joomla! Interagieren. Viele Erweiterungen installieren Plug-ins, die Inhalte, System- oder Benutzeraktivitäten verwalten, um Codefunktionen zu initiieren. Einige von ihnen können überflüssig sein. Ich weiß, dass k2 viele Plugins installiert, die auf sprachbezogene Ereignisse reagieren und für Websites in einer Sprache keine echte Ausgabe liefern. Das Aufheben der Veröffentlichung dieser Plugins kann die Verarbeitungszeit verkürzen. In ähnlicher Weise hatte K2 selbst die schlechte Angewohnheit, teure Abfragen zu erstellen, um fragwürdige Metriken zu erstellen.
Joomsavvy
1
Könnten Sie bitte Ihre Antwort mit Informationen in Ihrem Kommentar aktualisieren?
Harald Leithner
1

Verbessern Sie die Ressourcen des Server- / Webhosting-Plans

Vielleicht nicht die Antwort, nach der das OP gesucht hat, aber erwähnenswert, falls es nicht für alle offensichtlich ist (und noch keine anderen Antworten haben dies erwähnt): Verbessern Sie die Serverressourcen wie Speicher, CPU und Festplattengeschwindigkeit.

Wenn Sie gemeinsames Webhosting verwenden, kann das Upgrade vom "Economy" -Plan auf den "Business" -Plan oder einen anderen erweiterten Plan die für Ihre Website verfügbaren Serverressourcen verbessern und die Serverantwortzeit verkürzen. Ein Wechsel zu einem qualitativ besseren Hosting-Unternehmen (z. B. mit weniger überfüllten gemeinsam genutzten Webhosting-Servern) könnte ebenfalls hilfreich sein.

Ein besserer Hosting-Plan bietet Ihnen möglicherweise auch Zugriff auf Leistungsverbesserungen, die nicht im grundlegenden Hosting-Plan enthalten sind. Zum Beispiel enthalten die SiteGround-Hosting-Pläne "GrowBig" und "GoGeek" einen dynamischen Cache, mit dessen Hilfe die Serverantwortzeit erheblich verkürzt wird. Die dynamische Cache-Option ist im "Startup" -Plan nicht verfügbar.

Neil Robertson
quelle