Wie kann man bei Verwendung von Cloudfront den Expires-Header relativ zum aktuellen Datum festlegen?

8

Wir entwickeln eine große Website, und alle unsere Bilder und Ressourcen sind in Amazon S3. Wir verwenden Cloudfront auch, um unseren Content weltweit zu verteilen. Wir möchten dem Clients Web Browser mitteilen, dass er unsere Dateien zwischenspeichern soll. Wenn wir diese ändern, ändern wir auch die URL (Cloudfront gibt die Änderung 24 Stunden lang nicht an anderer Stelle wieder).

Wir verwenden derzeit ETags, aber dies ist nicht optimal, da der Client immer noch die Anforderung ausführen muss, um zu überprüfen, ob sich die Ressource geändert hat.

Eine Lösung wäre der Expires-Header, aber wir haben keine Möglichkeit gefunden, ihn in der Apache-Konfiguration für S3 relativ zum aktuellen Datum zu setzen, und wir können nicht alle Inhalte regelmäßig aktualisieren, weil es ziemlich viel ist. Wir benötigen also eine Konfigurationsoption, die den Expires-Header auf ein Datum relativ zum aktuellen Datum für alle Inhalte setzt.

Eine andere Lösung wäre, Cache-Control: max-age auf einen bestimmten Wert zu setzen. Funktioniert das? Wird es von großen Browsern akzeptiert? Werde ich einige Caching-Algorithmen damit zerstören? Warum empfiehlt YSlow den Expires Header, aber nicht Cache-Control: max-age?

Irgendwelche anderen Empfehlungen? Wir komprimieren CSS und JS, verwenden Sprites, wo es plausibel ist, setzen Expires-Header und ETags dort, wo es möglich ist, und werden unsere Bilder bald mit dem Yahoo-Komprimierungstool komprimieren und Ausgaben ausgeben.

    
Paul Weber 21.01.2011, 15:20
quelle

2 Antworten

3

Wir haben etwas über uns selbst geforscht. Sieht so aus, als ob der Cache-Control-Header dazu beiträgt, Cloudfront oder einem Proxy mitzuteilen, einen gültigen Expires-Header zu setzen, aber nur manchmal ...

Wir schreiben gerade einen Cron-Job, um alle Header im S3 regelmäßig zu aktualisieren, denn das ist eine Sache, die mit Sicherheit funktioniert. Scheint so, als gäbe es keinen anderen Weg. Ich werde Sie auf dem Laufenden halten, wenn es welche gibt.

    
Paul Weber 16.02.2011, 11:34
quelle
2

Warum benötigen Sie die Cache-Dauer relativ zum aktuellen Datum?

Du hast gesagt:

  

"Wenn wir sie ändern, ändern wir auch die URL"

Was für mich bedeutet, dass sich Ihre Ressourcen niemals ändern. Warum nicht dann setzen Sie einen Expires Header zu einem weit weit entfernten Datum (01.01.2020 zum Beispiel)?

    
Benjamin Simon 25.09.2012 20:00
quelle