gpt4 book ai didi

ipad - Mobile Safari 发出多个视频请求

转载 作者:行者123 更新时间:2023-12-02 19:41:26 24 4
gpt4 key购买 nike

我正在为 iPad 设计一个 Web 应用程序,它在移动 safari 中使用 HTML5。我通过运行 .NET Framework v2.0 的 IIS 7 上托管的 ASP.NET .ashx 文件手动传输文件。

基本代码部分如下所示:

// If we receive range header only transmit partial file
if (context.Request.Headers["Range"] != null)
{
var fi = new FileInfo(filePath);
long fileSize = fi.Length;

// Read start/end index
string headerRange = context.Request.Headers["Range"].Replace("bytes=", "");
string[] range = headerRange.Split('-');
int startIndex = Convert.ToInt32(range[0]);
int endIndex = Convert.ToInt32(range[1]);

// Add header Content-Range,Last-Modified
context.Response.StatusCode = (int)HttpStatusCode.PartialContent;
context.Response.AddHeader(HttpWorkerRequest.GetKnownResponseHeaderName(HttpWorkerRequest.HeaderContentRange), String.Format("bytes {0}-{1}/{2}", startIndex, endIndex, fileSize));
context.Response.AddHeader(HttpWorkerRequest.GetKnownResponseHeaderName(HttpWorkerRequest.HeaderLastModified), String.Format("{0:r}", fi.CreationTime));

long length = (endIndex - startIndex) + 1;
context.Response.TransmitFile(filePath, startIndex, length);
}
else
context.Response.TransmitFile(filePath);

现在最让我困惑的是 safari 似乎使用的请求协议(protocol)。通过 fiddler 代理请求,我得到了以下大约 2MB 文件。

Fiddler requests

注意:当请求 mp4 文件时,直接通过 IIS 7 提供服务,协议(protocol)和请求量是相同的

  1. 首先,它请求 2 个字节,以便读取“Content-Range” header 。
  2. 现在它请求整个内容(?)
  3. -
  4. 它会再次执行步骤 1. 和 2. (??)
  5. -
  6. 现在仅请求文件的部分内容 (???)

如果文件较大,最后的步骤将会更多。我测试了多达 99 个请求,其中每个请求均包含文件的一部分。这是有道理的,也是我所期望的。我无法理解的是为什么它在最终请求文件的不同部分之前对前 2 个字节发出 2 个初始请求以及对整个文件发出 2 个请求。

我得出的结论是,这会导致文件被下载 2 - 3 次,具体取决于文件的长度以及用户观看时间是否足够长。

任何人都可以理解这种行为,并解释我可以采取哪些措施来防止多次下载。谢谢。

最佳答案

根据我对您问题的评论,我过去也遇到过类似的问题。如果您可以控制服务器(我没有),您可以尝试的一件事是禁用文件的 gzip 或身份编码。我相信在对整个内容的第一个请求(列表中的#2)中,它要求使用 gzip 编码(压缩)的内容。也许您可以将 IIS 配置为不为 gzip 编码请求提供文件服务。

这是我关于该主题的原始(未回答)问题:

https://stackoverflow.com/questions/4855485/mpmovieplayercontroller-not-playing-full-length-mp3

关于ipad - Mobile Safari 发出多个视频请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6094556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com