Speed up your websites and reduce server load with mod_expires

Beschleunigen Sie Ihre Websites und reduzieren Sie die Serverbelastung mit mod_expires

Als Drupal Agentur, die Drupal Support bietet, beschäftigen wir uns viel mit Performance. In diesem Beitrag werde ich eine einfache Einstellung besprechen, die die Ladezeit von Websites mit Bildern erheblich erhöht.

Unter Debian ist mod_expires bei Apache, das aus den Repositories installiert wird, standardmäßig deaktiviert. Dies erhöht die Serverlast erheblich.

Was macht also mod_expires? Es "steuert die Einstellung des Expires HTTP-Headers und der max-age-Direktive des Cache-Control HTTP-Headers"...

Lassen Sie mich das erklären.

Das Modul ermöglicht es Apache, Clients (z.B. Ihrem Browser) mitzuteilen, wie lange ein bestimmtes Asset als gültig behandelt werden kann.

In seinem .htaccess hat Drupal 7 diese Zeilen

Zum Beispiel:

<IfModule mod_expires.c>
  # Aktiviere Expirations.
  ExpiresActive On

  # Cache alle Dateien für 2 Wochen nach dem Zugriff (A).
  ExpiresDefault A1209600

  <FilesMatch \.php$>
    ExpiresActive Off
  </FilesMatch>
</IfModule>

Dieser Code (wenn Sie mod_expires aktiviert haben), informiert alle Clients, dass Dateien, die keine *.php-Dateien sind, 2 Wochen gültig sind.

Wenn Ihr Browser ein Bild einmal von einem Server abruft, wird es 2 Wochen lang im Cache gehalten und aus dem Speicher bereitgestellt, anstatt es jedes Mal vom Server abzurufen, wenn Sie eine Seite laden.

Der größte Gewinn wird in der Regel bei Bildern erzielt. Alle Bilder für das Template Ihrer Website und alle Inhaltsbilder werden nur einmal alle 2 Wochen angefordert. Auf einer Website mit 10 Bildern macht ein Benutzer, der die Seite alle 3 Tage besucht, insgesamt 10 Anfragen anstatt 50 in diesen 2 Wochen. Angenommen, er besucht bei jedem Besuch 3 Seiten, können Sie sich 140 Anfragen an Apache sparen. 14 mal weniger Anfragen!!!

Ohne mod_expires unterperformt Varnish

Wenn Sie mod_expires nicht aktiviert haben, unterperformt Varnish auf Ihrem Server ernsthaft.

In den Performance-Einstellungen auf Ihrer Drupal-Website (admin/config/development/performance), können Sie das Cache-Ablaufdatum für zwischengespeicherte Seiten festlegen. Dies funktioniert jedoch nur für die Seite (HTML und für die CSS/JS-Dateien).

Anfragen für Bilder sind separate Anfragen und wenn mod_expire deaktiviert ist, werden weder die max-age-Direktive noch der EXPIRES-Header auf diesen Dateien gesetzt. Varnish behandelt sie als Dateien, die nur für eine einzelne Anfrage gültig sind und speichert sie nicht im Cache. Jede Anfrage wird an Apache weitergeleitet.

Zurück zu unserem Beispiel: Wenn wir eine Website mit 10 grafischen Ressourcen haben, die hinter Varnish steht, wird ein Benutzer bei deaktiviertem mod_expires Folgendes tun:

  • mindestens 2 Anfragen an Varnish (Seite und CSS-Datei) - Header, die von Drupal gesetzt werden
  • 10 Anfragen, um Bilder abzurufen

Wenn Sie mod_expires aktivieren, können alle 12 Anfragen von Varnish bedient werden, ohne Ihre Festplatten zu berühren.

Dank mod_expires wird sich Ihre Varnish-Hit-Rate erheblich verbessern und Ihre Festplatten werden viel länger halten.

Haben Sie also mod_expires aktiviert?

Wenn nicht, dann:

sudo a2enmod mod_expires sudo service apache2 reload

As part of Drupal support, we maintain existing websites and expand them with new functionalities