2016-03-04 70 views
0

因此,我的公司私下将所有PDF文件存储在Amazon S3中。 当用户请求时,它我们的系统从Amazon S3拉,然后将其与下面的代码投放到用户:使用PHP和Apache随机缓慢下载速度

header("Cache-Control: public"); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Content-Description: File Transfer"); 
header('Content-Disposition: attachment; filename="'.$fileName.'"'); 
header('Content-Length: ' . strlen($res->body)); 
header("Content-type: application/pdf"); 
header("Content-Transfer-Encoding: binary"); 
header('Connection: close'); 
echo $res->body; 

$水库是$res->body;

我看到亚马逊与内容返回的响应当用户尝试下载PDF文件时,随机缓慢的下载速度,尤其是当PDF大(〜5mb)时,相比于其他只有800kb-1.5mb的文件。

解决方案尝试: 1)删除内容长度标题没有帮助。 2)在httpd.conf中关闭EnableSendfile也没有帮助。

我也检查了服务器,以确保它不是导致此问题的服务器的工作负载。 服务器和用户工作站的速度测试也很好。

你们中的任何人都知道造成这种缓慢的原因是什么?

+0

你的确切*问题是什么? –

+0

似乎不是一个编程问题。 (除非你提供任何线索,可能是) – m02ph3u5

+0

对不起,只是更新我的线程,我只想找出下载中这种随机缓慢的问题。 –

回答

0

您的公司可能会有多人使用互联网。 您应该对网络进行全面扫描,但即使您并非独自在互联网上,也可以共享他们的“虚拟”服务器环境。

+0

我确实要求系统管理员扫描网络,但我被告知网络运行良好,原因不大。 –

+0

从他的角度来看,确实很好,但那一刻真的发生了什么?在我们的网络中,我看到有些人进来时他们的速度下降,他们的Dropbox开始同步,而这只在一家小公司中。想象一下大公司的这样的事情,一个网络总是表现出动态的。 – user3800527

0

从我的理解,问题是,只需要花费时间从S3中获取文件,以便将其返回给用户。

请你帮个忙:

  1. 一个短周期时间
  2. 创建signed url将用户重定向到此类网址

不要担心,因为在创建已签署的网址不公开任何私人信息危及你的安全(如果你正确的话)

+0

我做了一个测试,看看我们的系统从S3获取文件需要多长时间,看起来并不是它背后的原因。 签名URL的想法也超出了我的想法,但我真的很想在做出此举之前找出背后的原因。 –

+0

我明白了,但我认为这样也可以降低复杂性。 –