2012-04-05 225 views
2

为了获得最大负载的速度和页面效率,是它最好有:更适合加载速度:较大的JSON文件或需要处理的小型CSV文件?

  1. 一个18MB JSON文件,其中包含的词典的阵列,其可以装入,并开始使用作为本地JavaScript对象(例如var myname = jsonobj[1]['name'])。
  2. 一个4MB的CSV文件,我需要使用jquery.csv插件读取,然后使用查找来参考:var nameidx = titles.getPos('name'); var myname = jsonobj[1][nameidx])。

我并不真的期待任何人给我一个明确的答案,但一般的怀疑是非常有用的。或者如何测量技巧 - 也许我可以使用开发工具检查加载速度和效率之间的权衡。

我的怀疑是,使用CSV中的原生JavaScript对象的任何额外效率都会超过CSV文件的大小,但我想知道其他人是否也这么认为。

+9

基准,基准,基准。 – 2012-04-05 16:28:48

回答

2

你现在的情况是什么?你是否正在编写一些内部网站,你知道浏览器用户使用什么,并有合理的带宽期望,或者这是一个面向公众的网站?

如果您可以控制人们使用哪些浏览器,例如因为他们是您的员工,请考虑利用客户端缓存。如果你试图说服人们使用这些数据,你应该考虑将数据分成块并通过XHR提供。

如果你真的要为这一切在一次,然后:

  1. 用gzip
  2. 你在客户端做数据的重处理?你实际上可能会经历多少项目?如果你在任何特定的会话中只访问少于1,000个,那么我想想知道14MB的节省是值得的。另一方面,如果你一直在比较各种各样的东西(因为你正在做某种可视化或任何事情),那么我认为JSON会得到回报。

换句话说:这取决于。基准。

+0

谢谢,真的很有帮助的答案。这是一个面向公众的网站,用户可以使用桌面或移动浏览器。是的,我将使用所有数据,而且我不需要进行繁重的处理,但是我需要参考每个对象中的每个项目。 (这是一个可视化。)任何建议好的基准测试工具? – Richard 2012-04-05 16:46:00

+0

如果可视化运行的时间足够长并且定期修改数据,那么我会想象处理时间最终会占主导地位:如果页面一旦出现动画问题,那么页面加载速度无关紧要。但是如果它是静态的(如动态生成的图像或情节),那么页面加载时间就是你关心的。如果这是一个动画,我会说用csv技术写出来,看看它在你的手机上“足够好”。基本上,只需在可以创建的最有限的条件下进行功能测试,或者愿意要求用户使用。 – quodlibetor 2012-04-05 17:02:54

+0

这就是说,不,我不知道任何可视化测试框架。虽然我根本不知道这个空间,所以它们肯定存在。但是可视化本身通常用作底层平台的测试,所以你更多的是编写测试,然后寻找一个。我敢打赌,如果你写了两个版本,人们会对你的结果非常感兴趣。 – quodlibetor 2012-04-05 17:04:34

0

4MB vs 18MB?哪里有问题? Json现在只是标准格式,csv也许是一样的好,如果你使用它也可以。我的想法。

0

14Mb的数据是巨大的差异,但我会尝试首先服务于服务器端压缩的内容和因此,这些请求进行比较(可能CSV内容的长度再次会更好)

然后,我也想尝试创建jsperf都与CSV和JSON数据中的某些数据操作测试与真正的测试案例/常见的用法

4

你有没有考虑过使用gzip传递JSON内容 - 这里是一些基准在gzip上http://www.cowtowncoder.com/blog/archives/2009/05/entry_263.html

+1

@Richard @Richard如果内容是gzip,文件大小的差异可能可以忽略不计,试试吧,只需使用'gzip'创建一个gzip版本的文件 – 2012-04-05 16:38:27

+0

@JuanMendes你是对的 - 0.8MB与1MB!所以它根本不重要 - 谢谢。 – Richard 2012-04-05 17:15:24

0

这很大程度上取决于与用户的连接带宽。

除非这只会被超快速连接到服务器的人所使用,否则我会说最好的选择是一个更小的文件,它只包含您需要立即显示的实际信息,然后根据需要加载更多数据。

相关问题