Konfigurieren von Cache-Control-Header in Apache

0
52

Jeder browser macht die Verwendung einer built-in-cache zum speichern von gedownloadeten Objekten, die erheblich beschleunigen kann wiederholen Sie die Besuche auf Ihrer website durch das laden von der Festplatte statt im Netzwerk. Hier ist, wie es zu konfigurieren Apache.

Wie Funktioniert Caching Funktioniert?

Das erste mal ein Benutzer eine Verbindung zu Ihrer Website, die Sie herunterladen werden alle statischen Ressourcen, die zum Rendern der Seite, einschließlich Dinge wie Ihr logo. Wenn Sie navigieren Sie zu einer neuen Seite, wird es laden Sie Ihr logo aus dem Speicher, anstatt zu Fragen, für die es wieder, die Beschleunigung die Leistung erheblich und die Verringerung der Belastung auf Ihrem web-server in den Prozess.

Dies ist eine client-side cache, aber viele Websites nutzen ein Content Delivery Network oder CDN. Ein CDN ist ein Netzwerk von Servern, die sitzen vor Ihrem web-server, oder “origin” – server. Dieses Netzwerk speichert Ihre Seiten, die Steigerung Ihrer maximalen Bandbreite, die Verringerung der Zugriffs-Latenz, und stark reduziert die Belastung auf Ihrem origin-server. Wenn Sie möchten, erfahren Sie mehr über CDNs, Lesen Sie unseren guide auf Sie hier.

Cache-Control ist ein header, können Sie Ihr web-server hinzufügen, um alle ausgehenden Anfragen, die dem browser mitteilen, und CDNs, wie cache-Inhalte.

Bestimmte Seiten sollten niemals zwischengespeichert werden durch die shared caches wie CDNs. Dadurch wird die Gefahr der Anzeige eines Benutzers persönliche Informationen an andere. Als Allgemeine Regel gilt, wenn Sie die Seite gehen, um die genaue gleiche für alle Benutzer, wie Sie Ihre Homepage, können Sie Zwischenspeichern. Wenn es zeigt, vertrauliche Benutzer-info, Sie werden wollen, auf die blacklist setzen es aus dem cache. Statischen Ressourcen wie CSS und Bilder, kann in der Regel zwischengespeichert werden, für alle, die oft für viel mehr.

Die Menge der time-Objekt ausgeben, die in den cache ist auch wichtig. Bezeichnet als die ” Time-To-Live (TTL), das maximale Alter der Cache-Ressourcen bestimmt, wie lange das Objekt bleibt im cache, bevor Sie hinfällig wird, und fordert den Benutzer auf Anfrage ein neues Objekt. Für statische Ressourcen, die nicht viel ändern, Sie können sich sehr hohe TTL-Werte, in der Regel rund zwei Jahre. Für Dinge, die Sie wollen, um zu aktualisieren, werden Sie wollen, stellen Sie die untere TTL-Werten zu verhindern, dass veraltete Ressourcen im cache zu lange.

Sie können immer versionierte Dateinamen löst ein erneutes laden des cache. Wenn Sie eine neue version eines CSS-Stylesheet, können Sie es benennen Stile-1.0.1.css und der browser des Benutzers (und alle CDNs davor), sehen es als eine neue Datei, die muss redownloaded. Darüber hinaus sind einige CDNs, können Sie Problem-Handbuch invalidierungen Spülen Sie den vorhandenen cache ohne änderung der Dateinamen.

Wie Verwenden von Cache-Control-Apache

Cache-Control hat ein paar Optionen:

  • öffentlich – zwischengespeichert werden Kann von jedermann, einschließlich Browser und CDN. Verwenden Sie diese für die meisten statischen Objekte.
  • private – Enthält sensible Daten, die nicht zwischengespeichert werden können, die von CDNs oder reverse-proxies. Der browser des Benutzers kann lokal zwischenzuspeichern. Verwenden Sie diese für die meisten authentifizierten Seiten.
  • no-cache – Trotz des namens, es wird nicht deaktiviert Zwischenspeichern. Der browser kann immer noch die Antwort Zwischenspeichern, für die Leistung, sondern müssen über den origin-server für die updates, bevor Sie es. Verwenden Sie dies, wenn Sie möchten, dass der Benutzer aktualisiert, jedes mal.
  • no-store – Deaktiviert das Zwischenspeichern völlig. Verwenden Sie diese nur für sehr sensible Daten, das sollte nicht zweimal gesendet werden.

Darüber hinaus können Sie die no-transform-Richtlinie, die deaktiviert alle Konvertierungen, die getan werden, um die Ressource. Zum Beispiel, einige CDNs Bilder komprimieren, um die Bandbreite zu reduzieren. Diese Richtlinie deaktiviert dieses Verhalten.

In Apache müssen Sie diese Kopfzeile manuell mit dem Header set-Anweisung gesetzt, etwa so:

Header set Cache-Control “max-age=84600, öffentlichkeit”

Das max-age-Wert in Sekunden, zum Beispiel, max-age=300 für ein fünf-Minuten-TTL, max-age=63072000 für zwei Jahre.

Sie können diese Richtlinie in den root der Konfiguration gelten Website-Breite, aber eine bessere Methode ist, um die Einstellungen abhängig vom Typ der Datei. Zum Beispiel, um eine hohe TTL für die meisten statischen Medien, die Sie verwenden können, einen FilesMatch-block:

<FilesMatch “.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$”>
Header set Cache-Control “max-age=63072000, öffentlichkeit”
</FilesMatch>

Wenn Sie wollen, auf die blacklist setzen einen bestimmten Pfad zwischengespeichert werden durch CDNs, können Sie einen Directory-block:

<Directory “/private”>
Header set Cache-Control “max-age=300, der private”
</Directory>

Oder einfach mit einer einzigen Datei:

<- Datei “protected.html”>
Header set Cache-Control “max-age=300, der private”
</File>

Die Blöcke mit den mehr spezifische Spiele haben Vorrang vor Allgemeinen regex übereinstimmt, aber Sie wollen, stellen Sie sicher alles richtig eingestellt ist, am empfangenden Ende. Sie können dies überprüfen von Chrome DevTools unter Netzwerk – > Header.

Wenn Sie nur Zugriff haben .htaccess-Konfiguration, können Sie immer noch verwenden, Verzeichnis entsprechen, indem Sie eine neue .htaccess-Datei in jedem Unterverzeichnis.

Verwenden Ersatz-Steuerelement zu Ändern, CDN Verhalten Direkt

Die Surrogate-Control-header funktioniert genau wie Cache-Control, aber die details, die spezielle Anweisungen für CDNs und reverse-proxies, die eher als end-Benutzer. Auf diese Weise können Sie sagen, CDNs, eine Sache zu tun, aber senden Sie verschiedene Richtungen für den browser.

Sie müssen diese Kopfzeile manuell, in der gleichen Weise, wie Sie gesetzt Cache-Control:

Header set Surrogate-Control “max-age=300, public”

Sie werden auf jeden Fall testen wollen mit Ihrem CDN, um zu überprüfen, dass dies funktioniert—Surrogat-Steuerung ist ziemlich neu, und nicht universal.