可以使Flash缓存大型声音资产吗?

时间:2009-04-29 09:35:18

标签: flash caching cookies audio streaming

我在Flash(AS3 / Flex SDK / MXMLC)中编写了一个游戏,可以从我的服务器中传输音乐和声音文件。

我关注带宽 - 音频组件接近3MB,如果游戏变得流行,它将真正增加带宽费用。

有没有办法让Flash一旦下载后缓存音频组件,而不是每次在同一台PC上加载游戏时都将它们流式传输?

我知道SharedObjects(“cookies”),但我认为没有办法将二进制数据存储在那里......或者在那里?

1 个答案:

答案 0 :(得分:3)

当您说“stream”时,我认为您的意思是通过HTTP逐步下载。

对于初学者,您需要确保从您的服务器发送媒体资产,并使用符合您目标的相应缓存标头。如果这些不是缓存友好的,那么文件将不会被缓存。此外,查询字符串通常会阻止客户端缓存。

在这方面,Flash播放器并没有什么神奇的东西 - 一切都应该好像这只是一个简单的网页。

您可能需要考虑以便宜的方式托管大型静态媒体资产(例如Amazon S3CloudFront。)这可以降低不需要应用程序逻辑的批量传输的成本。

受评论启发的更新:以下是您可能需要遵循的大纲......

  1. 找出什么样的缓存是什么,而不是先发生
    1. 清除浏览器缓存
    2. 浏览游戏中的用例
    3. 再次浏览,希望看到使用相同的内容
    4. 检查Web服务器日志文件。第一组请求应该都具有HTTP 200响应代码。对于第二组请求,对已经交付的文件的“可缓存”请求应该看到 nothing 或HTTP 304(仅查看缓存的内容是否有效的请求)。如果您看到相同的请求集,都是200 OK,然后缓存没有发生
  2. 了解有关缓存的详情
    1. 像TamperData一样安装FireFox插件,观看缓存标题
    2. 阅读规范,了解它。 RFC 2616
    3. 实验
  3. 如果您已经缓存内容但我没有意识到这一点,我不会感到惊讶!