2009-04-29 8 views
0

Ich habe ein Spiel in Flash (AS3/Flex SDK/MXMLC) geschrieben, das Musik und Sound-Dateien von meinem Server streamt.Kann Flash große Sound-Assets cachen?

Ich bin besorgt über die Bandbreite - die Audio-Komponenten sind fast 3MB, und wenn das Spiel populär wird wird es wirklich die Bandbreite Gebühren.

Gibt es eine Möglichkeit, Flash die Audiokomponenten nach dem Herunterladen zwischenzuspeichern, anstatt sie jedes Mal zu streamen, wenn das Spiel auf demselben PC geladen wird?

Ich weiß über die SharedObjects ("Cookies"), aber ich glaube nicht, dass es eine Möglichkeit gibt, binäre Daten dort zu speichern ... oder gibt es?

Antwort

3

Wenn Sie sagen "Stream", ich nehme an, Sie meinen progressiven Download über HTTP.

Sie sollten sicherstellen, dass Ihre Medienressourcen von Ihrem Server mit den entsprechenden Caching-Headern gesendet werden, die Ihre Ziele für Anfänger erfüllen. Wenn diese nicht cache-freundlich sind, werden die Dateien nicht zwischengespeichert. Außerdem verhindern Abfragezeichenfolgen im Allgemeinen clientseitige Zwischenspeicherung.

In dieser Hinsicht gibt es nichts wirklich Magisches an dem Flash-Player - alles sollte funktionieren, als ob das alles nur eine einfache alte Webseite wäre.

Sie sollten in Betracht ziehen, Ihre großen, statischen Medien-Assets auf etwas billig-ish (wie Amazon S3 oder CloudFront) zu hosten. Dies könnte die Kosten für Massenübertragungen reduzieren, die keine Anwendungslogik erfordern.

Update durch die Kommentare inspiriert: Hier ist eine mögliche Gliederung für Sie in Ihrer Suche folgen ...

  1. herauszufinden, welche Art von Caching ist und geschieht nicht erst
    1. Löschen Sie Ihren Browser-Cache
    2. Gehen Sie durch einen Anwendungsfall in Ihrem Spiel
    3. Gehen Sie es erneut, mit der Erwartung, den gleichen Inhalt zu sehen
    4. Überprüfen Sie die Webserver-Protokolldateien. Die erste Gruppe von Anfragen sollte alle HTTP 200-Antwortcodes haben. Für die zweite Gruppe von Anfragen, "cachable" Anfragen für Dateien, die bereits geliefert wurden, sollten Sie entweder nichts oder HTTP 304 (eine Anfrage nur um zu sehen, ob der Inhalt im Cache gültig ist zu sehen.) Wenn Sie identische Sätze von Anfragen sehen, alle mit 200 OK, dann wird das Caching nicht
  2. weitere Informationen zum Caching
    1. Installieren sie ein Firefox-Plug-in wie TamperData, beobachten sie die Caching-Header
    2. Lesen sie die spec, wissen, dass es passiert. RFC 2616
    3. Experiment

würde ich nicht überrascht, wenn Sie Inhalte bereits Cachen wurden aber wusste es einfach nicht!

+0

Was ist "eine geeignete Caching-Header" für eine MP3-Datei?Im Flash-Code bekomme ich diese Datei über eine URL-Anfrage - wie würde ich dann darauf verweisen, wenn sie einmal zwischengespeichert wurde? –

+1

Erste Frage: Es hängt davon ab, was Ihre Bedürfnisse sind. Ändert sich Ihre MP3-Datei oft? Oder nie? Regelmäßig? Oder??? Zweite Frage: Das ist die Magie des Cachings! Sie müssen sich keine Sorgen machen. Sie fordern die Ressource an (http://example.com/sound.mp3) und der Browser verwaltet das Caching für Sie. Sie müssen sich als HTML, Flex oder Coder nicht darum kümmern. Seien Sie sicher, dass Sie das Caching nicht durch seltsame Dinge wie die Verwendung von Query-Strings (ein Hinweis auf dynamischen Inhalt und damit nicht auf Caching) "unterbrechen". Ich habe die Antwort mit weiteren Details aktualisiert. –