0

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

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

  • 从 Node js 本地脚本到 S3 存储桶 (bucket.zone.amazonaws.com/file) 的 GET 请求 - ~650ms
  • 从节点 js 本地脚本到节点 js 服务器的 GET 请求在连接到 S3 的 EC2 实例上运行 - ~1032ms
  • 从 Node js 本地脚本到 Node js 服务器的 GET 请求在 EC2 实例上运行,该实例从本地存储加载文件 - ~833ms

最后两个值之间的差异实际上是 EC2 实例从存储桶访问文件所增加的时间。从 EC2 向 S3 发出请求的原因是我知道 AWS 服务之间的连接非常快。

我进行的另一项测试来自浏览器(Firefox):

  • 直接访问 S3 存储桶 (bucket.zone.amazonaws.com/file) - ~624ms,值在 400ms 和 1000ms 之间
  • 通过 EC2 上的 Apache 服务器(域/文件) - ~875ms,值在 649ms 和 1090ms 之间
  • 通过连接到 S3 存储桶(在 EC2 上运行)(域:端口)的 Node js 服务器 - ~1014ms,值在 680ms 和 1700ms 之间
  • 通过从本地存储(在 EC2 上运行)(域:端口)加载文件的 Node js 服务器 - ~ 965ms,值在 60​​0ms 和 1700ms 之间

我的问题是为什么从浏览器访问文件和通过 Node 脚本访问文件有这么大的区别?

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

4

2 回答 2

0

我提出了几个线索,可以帮助你进行分析。

  1. 缓存,当您使用脚本获取 json 数据时。缓存机制不起作用。在浏览器中,它会尊重缓存头并可能从缓存中获取,从而降低速度。

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

谢谢

于 2013-06-18T17:53:04.383 回答
0

所以我认为这个问题没有更多意义,因为即使在努力刷新页面之后时间也更多。

于 2013-06-19T07:08:31.120 回答