3

我使用 NSURLConnection 下载文件。(基本上我使用JGDownload Accelerator

我的问题是当我尝试在一台特定服务器上下载文件时,服务器提供的响应各不相同,并给我不同的标头响应,如下所示

Printing description of headers:
{
    "Accept-Ranges" = bytes;
    "Cache-Control" = "max-age=687749";
    Connection = "keep-alive";
    "Content-Length" = 35617808;
    "Content-Type" = "video/mp4";
    Date = "Fri, 11 Sep 2015 07:21:59 GMT";
    Etag = "\"ee90ce32a16fc115d0799d686e5fe1b4\"";
    Expires = "Sat, 19 Sep 2015 06:24:28 GMT";
    "Keep-Alive" = "timeout=20";
    "Last-Modified" = "Wed, 09 Sep 2015 13:41:37 GMT";
    Server = ucdn;
    "X-Timestamp" = "1441806096.99264";
    "X-Ureq-ID" = "PYMqMNZBGw7LI3xeAHCTQwJs2FvO0y0xuG3+g5B0KcBzTv1v4kTfwCzHQYgrBEGSJQ0tBMG5L+srffrjBfio1R1ChR+wABEHY92PCg==";
    "X-VHostId" = "10000, 200000";
}

{
    "Cache-Control" = "max-age=687430";
    Connection = "keep-alive";
    "Content-Length" = 1;
    "Content-Range" = "bytes 0-0/35617808";
    "Content-Type" = "video/mp4";
    Date = "Fri, 11 Sep 2015 07:27:18 GMT";
    Etag = "\"ee90ce32a16fc115d0799d686e5fe1b4\"";
    Expires = "Sat, 19 Sep 2015 06:24:28 GMT";
    "Keep-Alive" = "timeout=20";
    "Last-Modified" = "Wed, 09 Sep 2015 13:41:37 GMT";
    Server = ucdn;
    "X-Timestamp" = "1441806096.99264";
    "X-Ureq-ID" = "PYMqMNZBGw7LI3xeAHCTQwJs2FvO0y0xuG3+g5B0KcBzTv1v4kTfwCzHQYgrBEGSJQ0tBMG5L+srffrjBfio1R1ChR+wABEHY92PCg==";
    "X-VHostId" = "10000, 710000";
}

基本的尊重是content-length关键,因为在第一个中它提供了适当的价值,而在第二个中它是错误的,我得到了大约 30-40 秒的延迟。

有什么办法可以避免这种延迟?或任何使响应快速的解决方法我的意思是服务器在 1 到 2 秒内提供数据,但回调方法提供数据较晚

对于请求/响应时间,我使用Charles应用程序。我找到的结果在这里

4

2 回答 2

0

看起来像网络服务本身的问题。

服务可能会从不同的服务中获取数据本身并将其传递。如果其他服务在预定义的时间内不接受来自客户端的重复连接(Retry-After Header)。

于 2015-09-16T10:42:04.227 回答
0

我已经尝试了所有可能的方法来减少时间延迟,但似乎没有办法使用NSURLConnection. 因此,我们已为此问题请求 Apple 工程师支持,并将在一段时间内得到他们的一些回复。

到那时,由于来自服务器的错误标头信息,没有其他方法可以避免这种延迟。

如果我收到 Apple 的任何回复,我会在这里更新。

于 2015-09-24T06:35:14.800 回答