Heim > Artikel > Backend-Entwicklung > So verwenden Sie Apache mod_expires und mod_headers, um Datei-Caching und mod_deflate-komprimierte Ausgabe zu implementieren
Aktivieren Sie mod_deflate
sudo a2enmod deflate sudo /etc/init.d/apache2 restart
Fügen Sie
<IfModule mod_deflate.c> #单独设置需要压缩的类型 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css AddOutputFilterByType DEFLATE application/x-javascript </IfModule>
zu httpd.conf hinzu. Standardmäßig müssen alle Ausgaben komprimiert werden und nur einige werden ausgeschlossen.
<IfModule mod_deflate.c> SetOutputFilter DEFLATE #插入过滤器,gzip所有输出 #设置不压缩的类型 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary </IfModule>
Aktivierenmod_expires und mod_headers
sudo a2enmod expires sudo a2enmod headers sudo /etc/init.d/apache2 restart
nutzen Sie mod_expires, in httpd. Fügen Sie
<IfModule mod_expires.c> ExpiresActive on #开启 ExpiresDefault A300 #默认 ExpiresByType text/html A300 ExpiresByType text/css A2592000 # 30天 ExpiresByType image/gif A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType application/x-javascript A2592000 </IfModule>
zu conf mit mod_headers hinzu, fügen Sie
<IfModule mod_headers.c> <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> <FilesMatch "\.(xml|txt)$"> Header set Cache-Control "max-age=18000, public, must-revalidate" </FilesMatch> <FilesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=3600, must-revalidate" </FilesMatch> </IfModule>
Der Cache von Webseiten wird durch das „Cache-Control“ im HTTP-Nachrichtenheader gesteuert. Zu den häufig verwendeten Werten gehören „private“, „no-cache“, „max-age“, „must-revalidate“ usw. Der Standardwert ist „private“. Seine Funktion ist entsprechend den verschiedenen Re-Browsing-Methoden in die folgenden Situationen unterteilt:
(1) Öffnen Sie ein neues Fenster
Wenn der Wert privat, kein Cache, erneut validieren ist, wird beim Öffnen eines neuen Fensters erneut auf den Server zugegriffen.
Und wenn der max-age-Wert angegeben ist, wird innerhalb dieses Werts nicht erneut auf den Server zugegriffen, zum Beispiel:
Cache-Steuerung: max-age=5 (zeigt 5 Sekunden nach dem erneuten Zugriff auf diese Webseite an (innerhalb von Sekunden wird der Server nicht aufgerufen)
(2) Drücken Sie die Eingabetaste in der Adressleiste
Wenn der Wert privat ist oder erneut validiert werden muss, wird nur beim ersten Mal auf den Server zugegriffen und es erfolgt kein erneuter Zugriff.
Wenn der Wert „no-cache“ lautet, wird jedes Mal darauf zugegriffen.
Wenn der Wert max-age ist, wird vor Ablauf nicht erneut darauf zugegriffen.
(3) Drücken Sie die Zurück-Taste
Wenn der Wert „Privat“, „Must-Revalidate“, „Max-Age“ lautet, wird nicht erneut darauf zugegriffen. Wenn der Wert von „No-Cache“ lautet, wird darauf zugegriffen jedes Mal wiederholt
( 4) Drücken Sie die Aktualisierungstaste
Unabhängig vom Wert wird wiederholt darauf zugegriffen
Cache-Control (regulärer Header, HTTP1.1 )
.öffentlich: (Nur Antwortheader) Antwort: Informieren Sie Cacher aller Kanäle darüber, dass die Antwort bedingungslos zwischengespeichert werden kann.
privat
(nur für den Antwortheader) Antwort: Den Cacher informieren (soweit ich weiß, bezieht es sich auf den Benutzeragenten, den lokalen Cache gängiger Browser. Der Benutzer bezieht sich auch auf den Systembenutzer Es sollte jedoch nicht ausgeschlossen werden, dass einige Gateways die Antwort nur für einen einzelnen Benutzer zwischenspeichern können. Beispielsweise kann der Header-Inhalt „Benutzername“ angegeben werden im Antwortheader wird nicht geteilt und zwischengespeichert. Entsprechendes Substantiv: End-to-End-Neuladen Der tatsächliche Wert besteht darin, Cacher immer dazu zu zwingen, die Aktualität des Caches zu überprüfen. Sobald die Aktualität bestätigt ist, kann die zwischengespeicherte Kopie als Antwort verwendet werden. Sie können auch ein eingeschlossenes Feld angeben, z. B. eine typische Anwendung, Nr -cache=Set-Cookie. Das Ergebnis ist, dass Sie für das Feld „Set-Cookie“ nicht den neuen Inhalt verwenden sollten >no-store:
Anfrage: Informieren, Anfragen und Antworten dürfen nicht zwischengespeichert werden (vielleicht aus Datenschutzgründen)
Antwort: Wie oben.max-age:
Anforderung: Antwort-Cacher erzwingen, Aktualität überprüfen. Das heißt, mit seinem eigenen Alterswert und der Anforderungszeit vergleichen, wird eine serverseitige Überprüfung erzwungen um sicherzustellen, dass eine neue Antwort zurückgegeben wird. Der Unterschied besteht jedoch darin, dass Expires auf der Grundlage eines bestimmten Datumswerts verglichen wird Offensichtlich hat Max-Age auch keine höhere Priorität als Expires.
Antwort: Ähnlich wie oben, außer dass der Absender anders ist.
.max-stale:
Anfrage: Das heißt, ich erlaube dem Cacher, einen Cache zu senden, der älter als die angegebenen Sekunden ist.
Antwort: Wie oben.
Muss erneut validiert werden (Antwortheader). (nur) Antwort: Das heißt, wenn der Cache ein neuer Zeitraum ist, müssen Sie ihn erneut überprüfen, anstatt zu versuchen, einen Cache zurückzugeben, der sich nicht im neuen Zeitraum befindet. Der Unterschied zu „No-Cache“ besteht darin, dass „No-Cache“ den Cache vollständig ignoriert Konzept der frischen Periode und erzwingt immer eine erneute Validierung. Spart mehr Datenverkehr, aber im Vergleich zu keinem Cache ist dies möglicherweise nicht immer so genau, denn selbst wenn der Cacher denkt, dass es frisch ist, gibt es keinen Stellen Sie sicher, dass der Cacher nicht aktualisiert wurde und bei einer erneuten Überprüfung keine veraltete Kopie im Cache zurückgegeben werden kann 504 Gateway-Timeout.
.
proxy-revalidate
(nur Antwortheader) Antwort: Die Einschränkung ist ähnlich wie bei „must-revalidate“. Der Unterschied besteht im Umfang des Proxy-revalidate Schließen Sie den Cache des Benutzeragenten aus. Das heißt, seine Regeln gelten nicht für den lokalen On-Cache des Benutzeragenten..
min-fresh
(nur Anforderungsheader)
Bitte: Informieren Sie den Cacher darüber, dass mir ein neuer Cache zugewiesen wird, wenn die aktuelle Zeit plus der Wert von min-fresh die Ablaufzeit überschreitet. Tatsächlich habe ich persönlich das Gefühl, dass seine Funktion der von max-age ähnelt . Der Unterschied ist jedoch semantischer Natur.
only-if-cached: (nur Anforderungsheader) Anfrage: Teilen Sie dem Cacher mit, dass der Inhalt aus dem Cache stammen soll , und es ist mir egal, ob die Cache-Antwort frisch ist.
s-maxage
(nur Antwortheader) Antwort: Der einzige Unterschied zu max-age ist Dass s-maxage nur für den gemeinsamen Cache gilt, bezieht sich nicht auf den lokalen Cache des Benutzeragenten, z. B. den Cache für einen einzelnen Benutzer. Darüber hinaus hat s-maxage eine höhere Priorität als max-age..cache. Erweiterung (Cache-Erweiterung ist ein allgemeiner Name. Er bezieht sich auf alle benutzerdefinierten oder erweiterten Anweisungen. Sowohl der Client als auch der Server können Anweisungen im Zusammenhang mit der Cache-Steuerung anpassen und erweitern.) Dann können wir diese Cache-Steuerung tatsächlich durchführen :max-age=300, custom-directive = xxx,
public. Auf diese Weise definieren wir eine Erweiterungsanweisung namens „cache-extension“. Wenn der entsprechende Client oder Server diese Anweisung nicht erkennt, wird sie ignoriert.no-transform
Bitte: Sagen Sie dem Agenten, er solle den Medientyp nicht ändern, z. B. JPG, Sie haben ihn in PNG geändert.
In diesem Artikel wird die Verwendung von Apache erläutert mod_expires und mod_headers Implementieren Sie Datei-Caching und mod_deflate-komprimierte Ausgabe. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen: Einführung in die HTML5-Verlaufs-API
Über Bubbling, Dichotomie-Einfügung, schnelle Sortieralgorithmus-Einführung
Erklärt den zugehörigen Inhalt der PHP-Datei-Download-Klasse, die die Übertragung von Haltepunkt-Lebensläufen unterstützt
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Apache mod_expires und mod_headers, um Datei-Caching und mod_deflate-komprimierte Ausgabe zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!