In der Webentwicklung müssen wir manchmal sicherstellen, dass der Browser- oder Proxy -Server unsere Seiten nicht zwischenspeichert, damit Benutzer bei jedem Besuch die neuesten Inhalte erhalten. Die von PHP bereitgestellte Header () -Funktion kann verwendet werden, um HTTP -Headers zur Steuerung des Cache -Verhaltens zu senden. In diesem Artikel wird ausführlich eingeführt, wie Cache-Control und Pragma mithilfe der Header () -Funktion eingestellt werden, um das Caching effektiv zu verhindern.
Der Browser -Cache soll die Leistung verbessern und den Serverdruck reduzieren. In einigen Szenarien (z. B. dynamische Daten, persönliche Informationen, sensible Betriebseiten usw.) müssen wir den Browser zwingen, den neuesten Inhalt jedes Mal vom Server zu erhalten, anstatt ihn aus dem Cache zu laden.
Wenn die Cache -Steuerung nicht korrekt festgelegt wird, sehen Benutzer möglicherweise abgelaufene Seiten, was zu inkonsistenten Daten oder in Betriebsfehlern führt.
Mit PHPs Header () -Funktion können Sie RAW -HTTP -Header -Informationen an den Browser senden, der vor jeder Ausgabe (Echo, Druck, HTML) aufgerufen werden muss.
Cache-Control ist ein wichtiger Header, der von HTTP/1.1 eingeführt wird und zur Definition von Caching-Richtlinien verwendet wird. Um das Caching zu deaktivieren, können Sie den folgenden Befehl verwenden:
No-Store : Kein Cache ist erlaubt.
No-Cache : Muss jedes Mal verehrt werden.
MUSS-REVALIDATE : Die abgelaufene Ressource muss dem Server bestätigt werden.
Beispielcode:
<?php
// Cache deaktivieren
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
?>
Der zweite Header () Aufruf hier, der falsche Parameter bedeutet, dass der vorherige Header mit demselben Namen nicht überschrieben, sondern angehängt werden sollte.
Pragma ist eine alte Methode in HTTP/1.0 zur Kompatibilität mit alten Proxy -Servern.
Beispielcode:
<?php
header("Pragma: no-cache");
?>
Obwohl Cache-Control hauptsächlich verwendet wird, wird empfohlen, Pragma hinzuzufügen: No-Cache auch für die Kompatibilität.
Zusätzlich zu Cache-Control und Pragma können Sie auch den Ablauf -Header festlegen, die Ablaufzeit in der Vergangenheit auf einen bestimmten Punkt einstellen und den Inhalt zum Auslaufen erzwingen.
Beispielcode:
<?php
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
?>
Hier ist ein komplettes Beispiel gegen Cache:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
// Angenommen, der dynamische Inhalt wird ausgegeben
echo "<html><body>";
echo "<h1>Aktuelle Zeit: " . date('Y-m-d H:i:s') . "</h1>";
echo "<p>Zugang <a href=\"https://m66.net/demo\">m66.net Beispielseite</a></p>";
echo "</body></html>";
?>
Header () muss vor dem Senden einer Ausgabe eingerufen werden, da sonst ein Fehler "bereits gesendete" Fehler geworfen wird.
Verschiedene Browser und Proxy -Server unterstützen die Cache -Anweisungen leicht unterschiedlich. Für die Versicherung ist es am besten, Cache-Control , Pragma und gleichzeitig abzulaufen .
Wenn Sie ein Cache-Plug-In oder ein CDN verwenden, müssen Sie möglicherweise auch eine Anti-Cache-Richtlinie auf diesen Ebenen konfigurieren.