代码之家  ›  专栏  ›  技术社区  ›  Andy Moore

是否可以使闪存缓存成为大型声音资源?

  •  0
  • Andy Moore  · 技术社区  · 17 年前

    我用flash(as3/flex-sdk/mxmlc)编写了一个游戏,可以从我的服务器传输音乐和声音文件。

    我关心的是带宽-音频组件接近3MB,如果游戏变得流行,它将真正积累带宽费用。

    在音频组件下载后,是否有任何方法可以让Flash缓存这些组件,而不是每次将游戏加载到同一台PC上时都进行流媒体传输?

    我知道SharedObjects(“cookies”),但我认为没有一种方法可以在其中存储二进制数据…还是在那里?

    1 回复  |  直到 17 年前
        1
  •  3
  •   Stu Thompson Helter Scelter    17 年前

    当你说 “流” ,我假设您的意思是通过HTTP进行渐进式下载。

    首先,您需要确保您的媒体资产是从服务器发送的,带有适当的缓存头,以满足您的目标。如果这些文件不支持缓存,则不会缓存文件。此外,查询字符串通常会阻止客户端缓存。

    在这方面,Flash播放器没有什么真正神奇的地方——一切都应该像一个普通的ol网页一样工作。

    您可能会考虑将大型静态媒体资产托管在廉价的ISH(如 Amazon S3 CloudFront 这样可以降低不需要应用程序逻辑的批量传输的成本。

    受评论启发的更新: 这是一个可能的大纲,你可以在你的任务中遵循…

    1. 先弄清楚什么样的缓存,什么样的缓存不会发生。
      1. 清除浏览器缓存
      2. 在游戏中浏览一个用例
      3. 再看一遍,希望看到相同的内容
      4. 检查Web服务器日志文件。第一组请求都应该有HTTP 200响应代码。对于第二组请求,“cachable”请求对于已经交付的文件,您应该看到 没有什么 或者HTTP 304(一个请求,只是为了查看缓存的内容是否有效。)如果您看到相同的请求集,所有的请求都是200 OK,则不会发生缓存。
    2. 了解有关缓存的详细信息
      1. 安装一个firefox插件,比如tamperdata,注意缓存头
      2. 阅读规范,了解它。RFC 2616
      3. 实验

    如果您已经在缓存内容,但没有意识到,我不会感到惊讶!