动态显示ASCX控件中的类别和子类别

时间:2012-07-07 14:11:46

标签: c# asp.net ascx nopcommerce megamenu

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

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

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

请指教?我使用C#ASP.NET

使用NopCommerce 1.9

1 个答案:

答案 0 :(得分:1)

你基本上只是将一个性能问题转移到另一个。您所描述的内容称为 N + 1 SELECT问题。有关快速说明,请参阅此代码项目文章:Select N+1 Problem – How to Decrease Your ORM Performance

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

如果您的层次结构非常深且具有多个级别,请查看您的典型用户使用情况是否深入到此层次结构中。如果只有20%或更少的用户向下钻取,那么懒惰的负载解决方案对您来说可能是好的。

如果包含您的类别的数据不是很大(我会说,小于50K),那么急切地加载所有数据并在客户端上呈现它就没那么明智了。