我在3d party ORM框架中有一个Page
类和一个PageCollection
类。我可以根据参数(pageid,parentid,url等)填充PageCollection(SQL查询)。但我需要在ASP.NET MVC网站(站点地图,身份验证)周围多次数据,所以我选择加载所有页面1次并引用该(全局)集合。
GlobalClass.Pages //is PageCollection containing all pages
我现在已经创建了函数,这些函数根据之前提到的参数(pageid,parentid,url等)返回临时子集合或单个实体。
GlobalClass.Pages.GetByPageId(id) //returns single page entity
GlobalClass.Pages.GetByParentId(parentid) //returns subcollection
然而,该网站变得非常缓慢。
GetByParent()
)?Namespace BLL
Public Class PageCollection
Inherits CustomCollectionBase
Public Sub New()
End Sub
Public Sub LoadByParent(ByVal PagParent As Integer)
If PagParent = 0 Then
Me.whereAdd('parent IS NULL')
Else
Me.whereAdd('parent = ' & PagParent.ToString())
End If
Me.Load(Me.data)
End Sub
Public Function GetBySiteMapNode(ByVal node As SiteMapNode) As BLL.Page
Return Me.GetByUrl(node.Url)
End Function
Public Function GetById(ByVal id As Integer) As BLL.Page
For Each p In Me
If p.PagAutoKey = id Then Return p
Next
Return Nothing
End Function
Public Function GetByUrl(ByVal url As String) As BLL.Page
For Each p In Me
If p.Url = url Then Return p
Next
Return Nothing
End Function
Public Function GetByParent(ByVal parent As Integer) As BLL.PageCollection
Dim pc As New PageCollection
For Each p In Me
If p.PagParent = parent Then pc.Add(p)
Next
Return pc
End Function
End Class
End Namespace
答案 0 :(得分:2)
我要做的第一件事就是确定你的网站速度慢的原因。如果我每次因为表现不佳而得到一美元而且结果却是其他的......
在整个代码中设置跟踪点,找出您花费时间的地方。您当前的方法可能没问题,但是在某些实现细节上却被挂了。只修复你知道的事情。