Amazon CloudFront Latenz
Ich bin das Experimentieren mit AWS S3 und CloudFront für eine web-Anwendung, die ich entwickle.
In der app, die ich bin, so dass Benutzer Dateien hochladen, um den S3-bucket (mit der Verwendung von AWS SDK) und stellen Sie über CloudFront CDN, aber das Problem ist, selbst wenn die Dateien hochgeladen und bereit in den S3-bucket-es dauert etwa eine minute oder 2 zur Verfügung stehen in der CloudFront-CDN-url, ist das normal?
- Ja, ist es. Es dauert ein paar Minuten, um das verbreiten der Inhalte über edge-Standorten
- Das ist nicht die Idee hinter CDNs. Wenn Ihre Anwendung ist intolerant in Bezug auf caching und Ablauf, dann wären Sie besser dran mit S3 und verlassen CloudFront für die nur statischen Inhalt.
- Sie könnten erzeugen eine dummy-Anfrage (von deinem code) für die Datei, sobald Sie fertig sind hochladen zu zwingen, die CloudFront-Verteilung, um die Herkunft sofort.
- Sorry, Nein, habe ich nicht.
- Ihre Beschreibung der Art und Weise CloudFront funktioniert, ist falsch. Neue Dateien in S3 nicht weitergegeben erhalten zu jedem edge-Standort, wenn Sie erstellt werden. Jedem edge-Standort abrufen einer Datei, und fügen Sie es an den edge-Standort im cache das erste mal eine Datei angefordert wird. Ich empfehlen Sie diese Seite Lesen, um zu verstehen, wie CloudFront (und die meisten anderen CDNs für, dass Materie) der Arbeit: docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/...
- Ist es möglich, dass Sie versuchen, fordern Sie die Datei von CloudFront, bevor es auf S3 hochgeladen? Oder, bevor der upload abgeschlossen ist? Das wird das Gift der cache für ein paar Minuten, weil die nicht-Existenz des Objekts wird kurz zwischengespeichert werden, indem Sie machen, dass die vorzeitige Anfrage. CloudFront ist absolut geeignet, um Echtzeit-Operationen, es gibt nur einen Grund für das Verhalten, das Sie beschreiben. Überprüfen Sie die Antwort-Header für eine
Age:
die Ihnen sagt, wie lange eine zwischengespeicherte Antwort im Cache gespeichert wurde. - positiv ist, dass sich die Dateien im S3-bucket und auch dafür gesorgt, dass seine öffentlich sichtbar gemacht.
- Richtig, aber ich Frage, wenn Sie versucht zu downloaden, bevor Sie versuchte, Sie zu laden, bevor die Datei war dort, weil, wenn Sie getan haben, dazu führen würde, dass das, was Sie sehen. Tun, den Fehler Antworten sind ein
Age:
header? - google-chrome! chrome.blogspot.com.au/2012/01/speed-and-security.html es lädt im hintergrund, bevor ich drücken Sie die EINGABETASTE.. ich eigentlich die eingegebene url und wartete, bis die Datei komplett hochladen (auf einem anderen tab). du hast so Recht!
Du musst angemeldet sein, um einen Kommentar abzugeben.
CloudFront versucht zu Holen, nicht zwischengespeicherte Inhalte aus der Ursprungs-server in Echtzeit. Es gibt keine "Replikation Verzögerung" oder ähnlichen Problem, weil CloudFront ist ein pull-through-CDN. Jeder CloudFront-edge-Standort weiß, nur über Ihre Website Existenz und Konfiguration; es weiß nicht, über Ihre Inhalte, bis Sie erhält Anfragen für Sie. Wenn das passiert, werden die CloudFront-edge holt den angeforderten Inhalt aus der Ursprungs-server und speichert es als angebracht, dienen die nachfolgenden Anforderungen.
Das Problem, das passiert hier in Bezug auf ein Konzept, manchmal auch als "negative caching" -- Zwischenspeicherung der Tatsache, dass ein ersuchen nicht Arbeit-das ist in der Regel getan, um zu vermeiden, hämmern die Herkunft von was auch immer zwischengespeichert werden, sich mit Anfragen, die dürften nicht ohnehin.
Wenn der browser oder etwas anderes, versucht, laden Sie die Datei aus, die insbesondere CloudFront-edge-vor dem hochladen in S3 ist komplett, S3, wird ein Fehler zurückgegeben, und CloudFront -- am edge-Standort -- wird-cache, der Fehler und denken Sie daran, für die nächsten 5 Minuten, nicht zu stören, versuchen Sie es erneut.
Nicht zu kümmern, obwohl-dieser timer ist konfigurierbar, so dass, wenn der browser tut dies unter der Kapuze und außerhalb Ihrer Kontrolle, Sie sollten noch in der Lage, es zu beheben.
Konfigurieren Sie dies in der Konsole:
Bei der Betrachtung der Verteilung der Konfiguration, klicken Sie auf die
Error Pages
tab.Für jeden Fehler, wo Sie anpassen möchten, um die Zeitmessung zu beginnen, indem Sie auf
Create Custom Error Response
.Wählen Sie den Fehler-code, den Sie ändern möchten, aus der drop-down-Liste, wie
403
(Verboten) oder404
(Nicht Gefunden) -- Ihr-bucket-Konfiguration bestimmt, welcher code S3 gibt für fehlende Objekte, so dass, wenn Sie sich nicht sicher sind, ändern 403 wiederholen Sie den Vorgang, und ändern 404.Set
Error Caching Minimum TTL (seconds)
zu0
Verlassen
Customize Error Response
eingestelltNo
(WennYes
ermöglicht diese option die eigene Antwort-Inhalte auf Fehler, das ist nicht, was Sie wollen. Die Aktivierung dieser option ist außerhalb des Anwendungsbereichs dieser Frage.)Klicken Sie auf
Create
. Dies bringt Sie zurück zur vorherigen Ansicht, wo sehen SieError Caching Minimum TTL
für den code, den Sie gerade definiert haben.Wiederholen Sie diese Schritte für jede HTTP-Antwort-code, den Sie ändern möchten, die Standard-Verhalten (das ist die 300 Sekunden Haltezeit, oben besprochen).
Wenn Sie gemacht haben alle änderungen, die Sie wollen, wählen Sie return to main CloudFront-Konsole-Fenster, wo die Distributionen aufgelistet sind. Warten Sie, bis die Verteilung Zustand zu ändern, von
In Progress
zuDeployed
(in der Regel etwa 20 Minuten, damit die änderungen an, die gedrückt werden, um all die Kanten) und testen.Sind diese neuen Dateien geschrieben S3 zum ersten mal, oder sind Sie updates zu bestehenden Dateien? S3 bietet read-after-write-Konsistenz für neue Objekte, und angesichts CloudFront-pull-Modell sollten Sie nicht mit diesem Problem mit neuen Dateien geschrieben S3. Wenn Sie sind, dann würde ich öffnen Sie ein ticket mit AWS.
Wenn diese updates zu bestehenden Dateien, dann haben Sie beide S3 eventual consistency und CloudFront cache-Ablauf zu bewältigen. Beides könnte dazu führen, diese Art von Verhalten.
Beobachtet, wie in Ihrem Kommentar, es scheint, dass google chrome ist Durcheinander mit dem hochladen/Album Vorhören Strategie:
Inhalt.