代码之家  ›  专栏  ›  技术社区  ›  milesmeow

HTML5是否支持离线缓存音频的访问?

  •  9
  • milesmeow  · 技术社区  · 14 年前

    我们想制作一个基于音频的网络应用程序,它将包含许多声音片段。我们希望缓存这些文件,以便性能良好,而不依赖于网络速度。HTML5可以缓存脱机模式的音频吗?

    3 回复  |  直到 14 年前
        1
  •  8
  •   Iain Collins Ryan    14 年前

    在我看来,这个 应该 工作,我找不到任何文件表明它不应该工作(无论是来自W3C还是来自苹果等供应商),但将音频文件作为资源放在缓存清单中似乎至少不适用于iPad和iPhone上的Safari。

    当应用程序处于在线状态时(尽管它似乎每次都会重新加载它们,而不是缓存它们),声音会很好地播放,并且在离线模式下不会抱怨资源不在那里(如果忘记包含javascript、css、html或image资源,则会立即这样做)。

    而不是抱怨(或加载);如果元素有一个控件,则该控件将替换为一个显示“无法播放音频文件”的框。或者,如果它是一个没有控件的元素(即通过javascript all to.play()访问),那么它只是不播放(它不会导致任何错误,没有声音,否则javascript会继续正常执行)。

    我用非常小的(<20k)文件测试过这个,结果是相同的,所以它似乎与大小无关,只是拒绝复制。 我不确定你是否可以像处理图像那样将声音编码为一个页面中的资源(例如,用base64编码),但我将调查这个选项——我怀疑这是可能的。 我尝试将音频数据编码为数据uri字符串,甚至尝试动态生成音频-两者在桌面上的Safari中都可以正常工作,但在iPhone/iPad操作系统上不工作(至少在3.x版上-我没有在iOS 4上尝试过,但它一周内都不会出现,即使他们确实修复了,iPad也不会在几个月内出现这种情况)。

    我想拒绝在iOS中缓存声音文件是一个实现错误,或者是有限的功能。对于很多用例来说,它无疑是一个烦人的、阻碍展示的东西。

    我不确定其他HTML5客户会发生什么,我有兴趣知道(尤其是安德里奥德)。谷歌对音频的支持也不尽如人意,因此也可能受到同样的限制。

        2
  •  1
  •   Pierreten    14 年前

    您可以始终开发一个与客户机sqllite db对话的解码/编码层。

        3
  •  0
  •   Quentin    14 年前

    我看不出您不能在中指定音频文件的任何原因。 cache manifest .

    推荐文章