1

当页面加载时,用图像显示所有类别和相应子类别的最佳方式(性能方面)是什么,以便我可以使用 UL LI 设置内容的样式以显示在 Mega Menu 中?

我正在考虑从包含 Mega Menu 的控件运行查询,该菜单应输出所有已发布的类别和子类别。但这会不断回到服务器运行查询吗?对性能不利!

然后我想在客户端机器上运行在 XML 文件中输出数据的查询(显然它将第一次从服务器运行查询),但随后它将读取 XML 文件。然后我在我的 Mega Menu 控件中使用 XSLT 设置 XML 数据的样式。

请指教?我正在使用 NopCommerce 1.9 使用 C# ASP.NET

4

1 回答 1

1

您实际上只是将一个性能问题转移到另一个问题上。您所描述的被称为N + 1 SELECT 问题。请参阅此代码项目文章以获取快速说明:选择 N+1 问题 – 如何降低您的 ORM 性能

现在,我不知道您是否使用 ORM,但无论您的数据访问层如何,这都是同样的问题。您是否应该只延迟加载嵌套层次结构的一个级别,并使您的客户端不必运行 N 个查询(每个查询都需要一个往返)来加载每个节点的子节点?或者您是否应该急切地将整个层次结构加载到客户端并按需呈现。答案是“视情况而定”。您可能最了解您的数据。

如果您的层次结构非常深并且有很多级别,请查看您的典型用户使用情况是否深入到此层次结构中。如果只有 20% 或更少的用户向下钻取,那么延迟加载解决方案可能适合您。

如果构成您的类别的数据不是很大(我会说,小于 50K),那么急切地加载所有数据并将其呈现在您的客户端上是不费吹灰之力的。

于 2012-07-07T14:34:37.273 回答