【问题标题】:How do you always refresh html Audio怎么老是刷新html音频
【发布时间】:2020-08-23 09:16:26
【问题描述】:

我的网络应用程序基于生成和播放音频文件。不幸的是,尽管音频文件本身正在更新(我知道这一点,因为当我下载它时它是正确的),网站上播放的音频是缓存的旧版本。即使多次硬刷新也无法通过缓存。如何重新加载音频源。

<audio controls>
    <source src="/static/output.wav">
</audio>

【问题讨论】:

  • “生成”音频是什么意思?听起来你真的想流媒体不?在这种情况下,您可能应该尝试一些流式传输策略,例如 IceCast 服务器?

标签: javascript html caching audio html5-audio


【解决方案1】:

即使多次硬刷新也不会超过缓存。

...

不幸的是,尽管音频文件本身正在更新(我知道这一点,因为当我下载它时它是正确的)

这些不是同一个 HTTP 请求。当您使用&lt;audio&gt; 元素时,它将发出范围请求。某处某处正在缓存它。

无论如何,您需要做的就是在 HTTP 响应上设置适当的 Cache-Control 标头。这样的事情会做:

Cache-Control: no-store

(当然,您实际上需要刷新浏览器的缓存以及任何服务器端缓存,然后才能看到此效果。)

另请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

【讨论】:

  • 虽然我想知道当他们从 file1 请求 1-100 范围,然后从 file2 请求 101-200 范围时会发生什么......曾经经历过这样的场景吗?
  • @Kaiido 好问题。我认为在这种情况下,客户端不会知道后端是否真的换出了资源。也许ETag 有帮助,但我没试过。在我自己的使用中,我使用唯一 ID 并且不重复使用它们,以便从缓存和 CDN 中获得尽可能多的价值。再次阅读这个问题,我认为您可能是对的,这个人想要在生产中实际生成新鲜的音频,这会带来其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多