Amazon Cloudfront Cache-Control: No-Cache-Header hat nach 24 Stunden keine Wirkung
Ich bin hosting einer statischen website in S3 und mit Cloudfront cache-Dateien. Ich habe im wesentlichen habe 3 Dateien mit folgenden überschriften:
- index.html (Cache-Control: no-cache)
- app.js (Cache-Control: max-age=63072000, öffentlichkeit)
- Stil.css ("Cache-Control: max-age=63072000, öffentlichkeit)
Meine html-Datei verwendet den query-string-Parameter, die aktualisiert wird jedes mal, wenn ich update meine css-oder js-Dateien. Ich habe s3 konfiguriert, übergeben Sie diese Parameter durch und ich habe festgestellt, dass es funktioniert, um invalidate-Cache-Ressourcen. Meine index.html die Datei sieht ungefähr so aus:
<html>
<head>
...
<link href="app.css?v=14113e2c764">
</head>
<body>
...
<script src="app.js?v=14113e2c764"></script>
</body>
</html>
Scheint es gut zu funktionieren, wie ich push-updates den ganzen Tag, aber wenn ich komme, am nächsten morgen auf und Schiebe meine nächste änderung, Die index.html die Datei ist veraltet. Anstatt die richtige ?v= parameter, es ist der alte! Die einzige Möglichkeit, es zu beheben ist, erlöschen die html-Datei manuell. Dann funktioniert alles für den rest des Tages. Am nächsten Tag habe ich das gleiche problem wieder.
Was ist denn hier Los?
InformationsquelleAutor der Frage Adam | 2013-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, dass die CloudFront-Verteilung ist
Minimum TTL
auf 0 gesetzt ist. Wenn es auf irgendeinen anderen Wert eingestellt, CloudFront nicht respektieren dieno-cache
header und noch cache-Datei für dieMinimum TTL
. Mehr details über die caching-Direktiven finden Sie hier:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
Wenn das nicht hilft, versuchen zu Debuggen, die die eigentliche HTTP-Anforderung für
index.html
und post die Antwort-Header hier, so können wir einen Blick auf Sie.Auch, statt mit
no-cache
für die index.html Datei, können Sie versuchen, mitpublic, must-revalidate, proxy-revalidate, max-age=0
Dies wird es ermöglichen, CloudFront, um die Datei auf den edge-Standort, aber es zwingt Sie es erneut validieren mit dem Ursprung, der mit jeder Anfrage. Wenn die Datei nicht geändert hat, CloudFront nicht brauchen, um die übertragung der Datei wird der gesamte Inhalt von der Herkunft. Dies beschleunigt die Reaktionszeit, vor allem für größere Dateien.
InformationsquelleAutor der Antwort dcro