Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 从S3和EC2存储下载速度,从节点js和浏览器请求_Performance_Node.js_Amazon Web Services_Amazon S3_Amazon Ec2 - Fatal编程技术网

Performance 从S3和EC2存储下载速度,从节点js和浏览器请求

Performance 从S3和EC2存储下载速度,从节点js和浏览器请求,performance,node.js,amazon-web-services,amazon-s3,amazon-ec2,Performance,Node.js,Amazon Web Services,Amazon S3,Amazon Ec2,我和我的团队正在制作一款手机游戏,游戏中有地图。我们将json信息存储在多个文件中——每个文件代表地图上的一个平铺。为了渲染地图,我们下载文件并处理它们以创建街道、建筑物等。 我想选择最好的方式将tile文件下载到移动设备上,但我无法在移动设备上进行此测试,因此我使用了浏览器和节点js脚本 我使用了一个100KB的json文件。将其上传到S3存储桶和EC2存储上。我编写了几个节点脚本来连接S3或EC2: 获取从节点js本地脚本到S3 bucket的请求(bucket.zone.amazonaw

我和我的团队正在制作一款手机游戏,游戏中有地图。我们将json信息存储在多个文件中——每个文件代表地图上的一个平铺。为了渲染地图,我们下载文件并处理它们以创建街道、建筑物等。 我想选择最好的方式将tile文件下载到移动设备上,但我无法在移动设备上进行此测试,因此我使用了浏览器和节点js脚本

我使用了一个100KB的json文件。将其上传到S3存储桶和EC2存储上。我编写了几个节点脚本来连接S3或EC2:

  • 获取从节点js本地脚本到S3 bucket的请求(bucket.zone.amazonaws.com/file)~650ms
  • 获取从节点js本地脚本到在连接到S3-~1032ms的EC2实例上运行的节点js服务器的请求
  • 获取从节点js本地脚本到节点js服务器的请求,该节点js服务器在EC2实例上运行,该实例从本地存储中加载文件-~833ms
最后两个值之间的差异实际上是EC2实例从bucket访问文件所增加的时间。从EC2向S3发出请求的原因是我知道AWS服务之间的连接非常快

我做的另一个测试来自浏览器(Firefox):

  • 直接访问S3存储桶(bucket.zone.amazonaws.com/file)~624ms,其值介于400ms和1000ms之间
  • 通过EC2(域/文件)上的Apache服务器—875ms,值介于649ms和1090ms之间
  • 通过连接到S3 bucket(在EC2上运行)的节点js服务器(域:端口)-~1014ms,值介于680ms和1700ms之间
  • 通过节点js服务器从本地存储加载文件(在EC2上运行)(域:端口)-965ms,值介于600ms和1700ms之间
我的问题是,为什么从浏览器访问文件和通过节点脚本访问文件之间存在如此大的差异

为了记录时间,我提出了10次每个请求,我做了平均次数。
EC2实例是微型的,在爱尔兰。水桶也位于爱尔兰。

我提出了一些线索,可以帮助您分析

  • 缓存,当您使用脚本获取json数据时。缓存机制无法工作。在浏览器中,它将接受缓存头并可能从缓存中提取,从而降低速度

  • GZip头,我想您不会启用GZip来压缩nodejs服务器中的数据。我不确定您是否在Apache上配置了这样的配置。想象一个有100k的json文件,如果它被压缩,传输时间肯定会减少


  • 谢谢

    所以我认为这个问题没有任何意义,因为在硬刷新页面之后,时间更为漫长。

    Micro不是这样测试的好例子。应该用小的或大的。哦,该死。它看起来像是浏览器的缓存。这就是为什么我在响应时间上有如此大的差异。无论如何,即使使用硬刷新,我也比运行节点脚本有更好的时间。对S3或通过Apache的请求大约为400ms。所以问题没有解决。我会更新这个问题。关于文件的大小,那是另一回事。我只是做了一些测试,看看从哪里可以获得更好的下载时间。非常感谢。