【发布时间】:2011-05-05 01:32:59
【问题描述】:
我最近创建了一个应用程序,其中在应用程序启动时将大量数据加载到对象中,并根据需要加载其他数据。例如,如果用户请求目录页面,那么它将所有顶级类别数据加载到类别类型的对象中。然后,这将留在那里供其他用户使用(因此他们不必将此数据加载到对象中),并且如果他们碰巧在同一个应用程序实例期间登录,管理员可以对其进行更改。我知道这不是最有效的解决方案,如下所述,但它可以工作,目前页面加载时间不会太长。如果大部分所需数据已加载到对象中,则速度非常快。它还根据业务需求量身定制 - 与 Linq-to-SQL 等其他技术不同。
我面临的问题是,当请求一个页面时,需要显示关于不同类型对象的大量数据。例如,当请求显示可购买产品信息的目录页面时,它会加载所有产品和类别(因为产品引用类别对象,而不仅仅是类别名称)。
当所有这些数据都被加载到对象中时,我想显示一个带有消息的加载符号,这样用户就知道它不仅仅是在循环或任何东西中。有没有办法做到这一点?如果需要,我愿意使用 JS / jQuery。
提前致谢。
问候,
理查德
PS 我正在研究提高效率的方法 - 例如使用 HashTables 或 HashMaps。然而,这需要时间,因为有很多不同类型的项目(新闻、事件、目录项目 - 范围、集合、设计、RangeCollection、CollectionDesign、RangeCollectionDesign 和 RangeDesign - 用户、页面视图等等)。
【问题讨论】:
-
嗯,看来我真的找到了答案。想我之前谷歌搜索时一定错过了这个链接。 codeproject.com/KB/aspnet/LoadingMsgWhilePageLoads.aspx。无论是否有人有更好的解决方案——也许不需要 JS 的解决方案,都会留下这个问题。
-
您几乎可以肯定地重新考虑您的设计方法 - 使用一些延迟加载技术,以便您只加载需要呈现给用户的内容。我不清楚如何与其他用户共享这些数据,这是一个网络应用程序,不是吗?那部分听起来有点冒险。但总的来说,我认为使用“请稍候”的东西应该仅限于它们等待服务器完成工作,而不是在页面加载时加载大量可能不需要的数据(除非我们正在谈论一个大闪存或其他东西)。如果不是立即需要,您的应用不必加载太多。
-
我会做到的,它会随着时间的推移简单地加载请求的数据。然而,目前这将不得不这样做。我一直都知道,使用这种方法,最终会出现问题。自从发布这篇文章后,我看了一点数据,我认为大部分数据实际上是页面浏览量,每天增加 50+ - 所以我可以简单地归档一周前的页面浏览量。这将解决这个网站的问题。但是,我正在考虑做一个比现有网站更有用的调查网站,但在这种情况下,过多的数据将是调查和问题本身。
-
哦,顺便说一句,目前所有这些调查网站(或我加入的所有知名网站)都使用加载符号或空白页。我认为在新站点的情况下使用加载符号并不过分。在回答你的问题时,我不记得我用来跨多个用户存储数据的确切方法,但我想我正在使用 Application 对象,例如
Application("SiteContent") = New SiteContent();。目前,Manager 类仅在首次需要时才会填充。例如通过SiteContent.UserManager().Items。 -
我突然想到,仅显示请求的项目(因此仅将请求的项目加载到对象中)不起作用,因为菜单显示了所有类别。但是,首先,他们会在显示该类别的链接之前检查每个类别中是否有多个产品 - 我们不希望客户现在导航到空类别,对吗?
标签: asp.net jquery css vb.net performance