2016-05-02 8 views
1

Ich verwende einen S3-Bucket, um eine Reihe von Produktbildern für eine große Website zu speichern. Diese Bilder werden über Cloudfront mit dem S3-Bucket als Ursprung geliefert. Mir ist aufgefallen, dass Cloudfront keinen Ablauf-Header für das Image erstellt, obwohl ich das Verteilungsverhalten so eingestellt habe, dass die Cache-Header angepasst und in Cloudfront eine lange Mindest-, Höchst- und Standard-TTL festgelegt wurde.Cloudfront wird keine Verfallsüberschrift von S3 Origin festlegen

Ich verstehe, dass ich ein Ablaufdatum auf dem S3-Objekt setzen kann, aber das wird ziemlich unpraktisch sein, da ich Millionen von Bildern habe. Ich hatte gehofft, dass Cloudfront mir die Ehre geben würde, diesen Header für mich hinzuzufügen, aber das tut es nicht.

Also ist meine Frage der einzige Weg, um diese Verfallsheader zu bekommen, um es auf jedes S3-Objekt anzuwenden, oder vielleicht verpasse ich etwas in Cloudfront, das es für mich tun wird?

Antwort

2

Die TTL-Konfiguration von CloudFront steuert nur die Zeitspanne CloudFront hält das Objekt im Cache.

Es fügt keine Überschriften hinzu.

Also, ja, Sie müssen diese auf die Objekte in S3 setzen.

Beachten Sie, dass Cache-Control: in der Regel als eine bessere Wahl als Expires: gilt.


Eine Alternative zu vermeiden, dass die onjects Aktualisierung ist es, einen Proxy-Server in EC2 in der gleichen Region wie der Eimer zu konfigurieren, und lassen Sie den Server die Header hinzufügen, um die Antworten durch sie hindurchtreten.

Request: CloudFront >> Proxy >> S3 
Response: S3 >> Proxy >> CloudFront 

... für was es wert ist.

+0

Vielen Dank. Ich führe ein Skript, um sie alle zu aktualisieren. Ich behalte aber die Proxy-Idee in meiner Toolbox. –