【发布时间】:2012-06-22 23:29:42
【问题描述】:
我正处于应用程序设计的关键决策点。它是一个 ASP.NET Web 应用程序,它使用 REST 来请求有关各种产品的信息。某些产品具有不同的 ProductID,具体取决于它们的属性/变体。例如,用户可能对 Rogaine 感兴趣。关于 Rogain 的 REST 请求可能会返回包含多个变体的响应 - 1 个月的供应量、3 个月的供应量或 4 个月的供应量。这些变体中的每一个都有不同的 ProductID、不同的正常价格、不同的销售价格和许多不同的属性。每个产品都有一组不同的“功能”、不同的图像等。每个产品的属性数量可能非常多。
在大多数情况下,只有几个产品变体。有时半打,有时一打或两个。在这些情况下,JSON 可以轻松处理我的要求。
但以连衣裙为例。它可能有几十种颜色可供选择。它也有 6 种不同的尺寸可供选择。您不希望在它们自己的页面上显示这些中的每一个。在单个页面上显示此产品并呈现这些尺寸和颜色选项供用户选择更加用户友好。也许他们想订购红色的小号。
在上面的示例中,有近 100 种选项组合。在这一点上,我认为 JSON 对我来说是一个不切实际的选择。对于每个独特的组合,都有多个图像链接(每个图像以不同的颜色显示产品)。每个产品都有标价、常规价格和销售价格,节省的金额。每个都有运输属性。每个都有自己的功能列表,可以是每个产品的文本段落。
好的,我的意思是 - 这是要填充到 JSON 字符串中的大量数据,当颜色或大小发生更改时,查找详细信息会有延迟。
我喜欢亚马逊提供选择的方式。这是这种情况的链接:
http://www.amazon.com/American-Apparel-Jersey-Chemise-Small-Navy/dp/B003ILSHQ2/
我查看了源页面,没有看到他们在客户端存储每个产品的详细信息的位置。如果您将鼠标悬停在每个颜色样本上,您会看到页面上的所有细节都发生了变化。价格、运费、大图、功能。几乎一切都在改变。
我偶尔会看到“正在加载...”指示器,但在大多数情况下,它的速度非常快,以至于您看不到任何客户端/服务器通信的迹象。
他们是如何在不完全重新加载页面并且不将这些信息存储在客户端上的情况下做到这一点的?他们用的是什么技术,有人知道吗?
相信我,每次更改产品变体时来回发送另一个 REST 请求的成本太高了。在我的第一个 REST 响应中,我已经拥有每个产品的 ALL 数据。数据不在我的服务器上或我的控制范围内,我真的不想将其保存在我的服务器上。
由于我已经拥有所有数据,我想将其存储起来,以便像亚马逊一样使用它,但我想将其交给客户。使用 JSON 字符串是完美的,在大多数情况下,我可以......但不是有效/高效。
有没有一种方法可以索引 JSON 字符串以使其更快地处理大量数据? JSON 是不是太多了?我还可以在 JQuery/Javascript 中使用哪些其他选项?
【问题讨论】:
-
听起来更像是如何组织数据的问题,而不是数据量的问题。亚马逊上的示例将数据存储在 js 变量中。以
colorImages对象为例 -
我也考虑过。将数据分解为对象。是的,您肯定会看到他们将一些数据存储在变量中的位置,但是该产品有 77 种独特的组合(5 种尺寸和 21 种颜色)。我没有找到任何有 77 个不同产品 ID 的对象。我找不到任何具有一堆价格或一堆运输选项的物品。图片,是的。但是其中很多不在客户端页面中-据我所知。我花了好几个小时看着它玩。
-
有很多方法可以处理它,如果不查看数据以及 UI 需要如何工作,就很难评估
-
该链接演示了我希望 UI 如何工作。真的,差不多就是这样。至于查看数据,上面的链接是一个由大约 100k 大小的复杂 XML 文件创建的页面。我认为您最初的评论是有价值的,它让我更加认真地考虑多个对象。尺寸/颜色选项(属性)决定了产品 ID。一旦确定了产品 ID,它就可以用作每个对象的键 - 定价、运输、图像等。我有点喜欢这样,并且认为它比将所有数据放在一个对象中要快得多。
-
您对 json 的大小完全反应过度,您的问题更多地与如何构建数据有关