Web -Caching: Ein entscheidender, aber schrulliger Aspekt der Webentwicklung. Zwischen Ihrem Browser und dem Server liegt ein komplexes Netzwerk von Caches und optimiert stillschweigend den Internetverkehr. Dieses System kann jedoch verblüffende Inkonsistenzen einführen, wenn sie nicht sorgfältig verwaltet werden.
Key Takeaways:
Last-Modified
, Etag
und Cache-Control
). Cache-Control
ist von größter Bedeutung und bietet Optionen wie no-store
, no-cache
, public
, private
und max-age
. http Header Management:
Caching -Verhalten wird durch HTTP -Statuscodes und Header diktiert. Ein Browser/Proxy serviert entweder zwischengespeicherte Daten, überprüft die Datenfrische mit dem Server oder holt neue Daten ab. Der Cache-Control
Header ist der Schlüssel:
no-store
oder no-cache
: no-store
verhindert alle Caching; no-cache
Ermöglicht dem Browser/Proxy, mit dem Server mit Last-Modified
und/oder Etag
vor dem Servieren von zwischengespeicherten Daten zu überprüfen. public
private
oder public
: private
erlaubt das Caching überall; max-age
Beispiel (PHP):
header('Cache-Control: private,max-age=30'); echo json_encode($data);
Beispiel (node.js/express):
res .set('Cache-Control', 'private,max-age=30') .json(data);
unterschiedliche URLs für Seiten und AJAX -Daten:
Auch bei den richtigen Header -Einstellungen können Browser -Inkonsistenzen entstehen, insbesondere bei der Verwendung der Back -Taste. Chrome und Edge könnten zum Anfangszustand zurückkehren, während Firefox und Safari den letzten bekannten Zustand behalten.
Betrachten Sie eine paginierte Tabelle:
http://myapp.com/list/
Initiale Seite Laden: http://myapp.com/list/?search=bob&page=42
ajax navigation: Die URL ändert sich (z. B.
&ajax=1
Wenn der AJAX -Aufruf dieselbe URL verwendet, kann Chrome/Kante zwischen JSON anstelle von HTML dienen, wenn der Rückstock gedrückt wird. Die Lösung: Verwenden Sie separate URLs für Seiten- und AJAX -Anforderungen (z. B. add
Die Gefahr von selbstsignierten SSL-Zertifikaten:
Selbstsignierte Zertifikate verhindern zwar für die Entwicklung, verhindern, dass Chrome (und wahrscheinlich andere blinkbasierte Browser) die Seitendaten zwischengespeichert. Dies schafft Inkonsistenzen zwischen lokalen Tests (kein Caching) und Live -Bereitstellungen (Caching aktiviert).
häufig gestellte Fragen (FAQs):
Der bereitgestellte FAQS -Abschnitt bleibt weitgehend unverändert, da er wertvolle Informationen über das zwischen Best Practices und Fehlerbehebung bietet. Der Inhalt ist bereits gut strukturiert und befasst sich mit häufigen Bedenken im Zusammenhang mit den Strategien von JSON-Antworten und allgemeinen Webentwicklungsstrategien.
Das obige ist der detaillierte Inhalt vonWie man Caching -Rätsel lösen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!