Ich habe einen Cron-Job, der alle 10 Minuten ausgeführt wird und den Inhaltstyp und das x-amz-Meta aktualisiert. Aber seit gestern scheint es so, als ob Amazon nach dem Ausführen des Cron-Jobs die vorgenommenen Änderungen nicht aufnimmt (Aktualisierung seines Caches).
Ich habe die Änderungen sogar manuell vorgenommen, aber keine Änderung ...
Wenn ein Video hochgeladen wird, hat es einen application/x-mp4
Inhaltstyp und der Cron-Job ändert ihn in video/mp4
.
Obwohl S3 den richtigen Inhaltstyp video/mp4
hat, zeigt Cloudfront application/x-mp4
(alter Inhaltstyp) ....
Der Cron-Job hat in den letzten 6 Monaten problemlos funktioniert.
Was ist los mit Amazon Caching? Wie kann ich das Caching synchronisieren?
Antworten:
Verwenden Sie Invalidierungen, um den Cache zu löschen. Sie können den Pfad zu den Dateien festlegen, die Sie löschen möchten, oder einfach Platzhalter verwenden, um alles zu löschen.
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidating-objects-api
Dies kann auch über die API erfolgen! http://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html
Das AWS PHP SDK verfügt jetzt über die folgenden Methoden. Wenn Sie jedoch etwas Leichteres verwenden möchten, lesen Sie diese Bibliothek: http://www.subchild.com/2010/09/17/amazon-cloudfront-php-invalidator/
Die Lösung von user3305600 funktioniert nicht, da das Setzen auf Null der Verwendung der Origin-Cache-Header entspricht.
quelle
Bezüglich des tatsächlichen Codes
Rufen Sie Ihre CloudFront-Distributions-ID ab
aws cloudfront list-distributions
Machen Sie alle Dateien in der Distribution ungültig, sodass CloudFront neue abruft
aws cloudfront create-invalidation --distribution-id=S11A16G5KZMEQD --paths /
Mein aktuelles Vollversionsskript ist
Verweise
http://docs.aws.amazon.com/cli/latest/reference/cloudfront/get-invalidation.html
http://docs.aws.amazon.com/cli/latest/reference/cloudfront/create-invalidation.html
quelle
--delete
Option verwendenaws s3 sync
, dies für Sie zu tun. dhaws s3 sync ${SOURCE_DIR} s3://${BUCKET}/ --delete
S3 wird nicht für die Echtzeitentwicklung verwendet, aber wenn Sie die Verwendung Ihrer frisch bereitgestellten Website wirklich testen möchten
Wenn Sie am Ende einen Versionsparameter hinzufügen, wird die zwischengespeicherte Version der Datei nicht mehr verwendet, und der Browser erhält eine neue Kopie der Datei aus dem Server-Bucket
quelle
Cloudfront speichert eine Datei / ein Objekt bis zum Ablauf des Caches zwischen. Standardmäßig ist es 24 Stunden. Wenn Sie dies auf einen großen Wert geändert haben, dauert es länger.
Wenn Sie den Cache jederzeit erzwingen müssen, verwenden Sie die Ungültigmachung . Es wird separat berechnet.
Eine andere Möglichkeit besteht darin, die URL (Objektschlüssel) so zu ändern, dass das neue Objekt immer abgerufen wird.
quelle
Wenn Sie nach einer minimalen Lösung suchen, die den Cache ungültig macht, sollte diese bearbeitete Version der Lösung von Dr. Manhattan ausreichen. Beachten Sie, dass ich das Stammverzeichnis / Verzeichnis angebe, um anzugeben, dass die gesamte Site aktualisiert werden soll.
Region Codes finden Sie hier
Sie müssen auch ein Profil mit der aws cli erstellen. Verwenden Sie die
aws configure --profile
Option. Unten finden Sie ein Beispiel-Snippet von Amazon.quelle
Hier ist eine manuelle Methode, um den Cache für alle Dateien in CloudFront über AWS ungültig zu machen
quelle
(Bearbeiten: Funktioniert nicht) Ab 2014 können Sie Ihren Cache jederzeit löschen. Gehen Sie die Dokumentation gründlich durch oder gehen Sie einfach zu Ihren Verteilungseinstellungen> Verhalten> Bearbeiten
Objekt-Caching verwenden ( Origin-Cache-Header ) Anpassen
Minimale TTL = 0
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
quelle
Verwenden Sie keine Ungültigmachungen. Sie können nicht zurückgesetzt werden und werden Ihnen in Rechnung gestellt. Die einzige Möglichkeit, wie es bei mir funktioniert, besteht darin, die TTL zu reduzieren und zu warten.
Grüße
quelle
Ich glaube, dass die Verwendung von * den gesamten Cache in der Distribution ungültig macht. Ich versuche es im Moment, ich würde es weiter aktualisieren
Anforderungs-Screenshot ungültig machen
Aktualisieren:
Es hat wie erwartet funktioniert. Bitte beachten Sie, dass Sie das gewünschte Objekt ungültig machen können, indem Sie den Objektpfad angeben.
quelle