gpt4 book ai didi

HTML5 音频播放器在加载时发出多个 GET 请求。为什么?

转载 作者:技术小花猫 更新时间:2023-10-29 12:50:49 30 4
gpt4 key购买 nike

我一直在研究使用 HTML5 音频播放器 () 播放 mp3 的 jquery 插件。我注意到在加载音频播放器时,在不同的浏览器中会针对同一个 MP3 文件发出多个 GET 请求。

我创建了一个简单的独立 HTML 文件来对此进行测试。

<html>
<head></head>

<body>
<audio controls src="http://localhost:5000/files/one.mp3" type="audio/mp3"></audio>
<body>
<html>

在 OS X Safari 5.0.1 中打开页面时,我从我的网络服务器(3 个 GET 请求)中看到以下日志:

>> Thin web server (v1.2.7 codename No Hup)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:5000, CTRL+C to stop
127.0.0.1 - - [17/Aug/2010 11:09:32] "GET /one.mp3 HTTP/1.1" 200 4030432
0.0022
127.0.0.1 - - [17/Aug/2010 11:09:32] "GET /one.mp3 HTTP/1.1" 200 4030432
0.0012
127.0.0.1 - - [17/Aug/2010 11:09:32] "GET /one.mp3 HTTP/1.1" 200 4030432
0.0010

请注意,请求是针对“GET/one.mp3”而不是“GET/files/one.mp3”,因为我的瘦网络服务器正在运行/files 前缀。

在 OS X Chrome 中打开同一个 HTML 文件时,我看到了 2 个针对/one.mp3 的 GET 请求。

在 OS X Opera 中打开同一个 HTML 文件时,我看到了 1 个针对/one.mp3 的 GET 请求。

单个文件多次GET请求是什么原因?我服务器上的带宽是有限的,我将连接限制在 75KB/s(那是 HTTP 连接,而不是用户)。我担心的是,如果 Safari 建立 3 个 HTTP 连接来下载(流式传输)单个 mp3 文件,它会减少我的服务器可以处理的并发用户数。

就性能/带宽而言,这是我应该担心的事情吗?另外,我很好奇为什么某些浏览器对同一个文件发出多个请求,而其他浏览器却没有。

最佳答案

对于 Firefox,会发出三个音频请求。这是为了支持播放区域和搜索尚未下载的媒体文件。它本质上是下载文件并确定其三个 block 的持续时间。当此行为为 reported to Mozilla as a bug 时,给出了以下解释:

  1. 第一个 GET 读取 ogg 文件的第一个 block 。由此我们可以确保它是一个有效的 ogg 等。下载的数据应该由 Firefox 缓存。
  2. 第二个 GET:不幸的是,Ogg 文件不包含它们的持续时间,因此我们终止了初始下载,我们寻找 Ogg 文件的末尾并读取一些数据以提取媒体的持续时间。
  3. 第三个 GET:在我们确定媒体的持续时间后,我们将继续下载媒体。我们不需要重新下载已经缓存的数据,因此我们从上一次下载停止的地方继续。

虽然此解释仅适用于 Firefox,但您可以假设 webkit 浏览器也使用类似的方法。

我认为您不必担心这会影响并发用户数。如果您的服务器日志显示以毫秒为单位的时间戳,您会看到三个请求连续触发,并且每个请求在发出后续请求之前被取消。

关于HTML5 音频播放器在加载时发出多个 GET 请求。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504008/

30 4 0
文章推荐: git - 创建别名 Git Bash Windows 10
文章推荐: javascript - 是否有等效于 SVG 的 Canvas toDataURL 方法?
文章推荐: git - 有人可以解释 git range-diff 的用法吗?
文章推荐: html - 在WPF控件中,有哪些类似 `
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com