brasso_42
asked on
ASP.Net AJAX Slide show extender uses over 1GB of RAM
Hi
I've writen a galery for my website using the AJAX slide show extender. The way the site works basically is that it has a tree view which contains users names and the category they've uploaded pics into. if you click the user it shows all images that user has uploaded and if you click the category it shows pic the user has uploaded for that category.
I store the Pic info in a mssql DB and add piccs to the slide showfrom this.
My problem is when you click on a folder the RAM the browser is using (IE8) starts to go up. After 10 sliddes its up to 200MB and soon it gets upto 1GB and the pics arnt displayed any more.
My Code for building the slide show is below
Can any one help?
Thanks
Brasso
I've writen a galery for my website using the AJAX slide show extender. The way the site works basically is that it has a tree view which contains users names and the category they've uploaded pics into. if you click the user it shows all images that user has uploaded and if you click the category it shows pic the user has uploaded for that category.
I store the Pic info in a mssql DB and add piccs to the slide showfrom this.
My problem is when you click on a folder the RAM the browser is using (IE8) starts to go up. After 10 sliddes its up to 200MB and soon it gets upto 1GB and the pics arnt displayed any more.
My Code for building the slide show is below
Can any one help?
Thanks
Brasso
<System.Web.Services.WebMethod()> _
<System.Web.Script.Services.ScriptMethod()> _
Public Shared Function GetSlides(ByVal contextKey As String) As AjaxControlToolkit.Slide()
Dim querystr As String = contextKey
Dim SQLCon3 As New SqlClient.SqlConnection
Dim SQLCmd3 As New SqlClient.SqlCommand
'Find out what path is being used e.g Public or public/user or public/user/category
SQLCon3.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("SiBrassoCon")
SQLCon3.Open()
SQLCmd3.CommandText = "Select len('" & querystr & "') - len(replace('" & querystr & "', '/', '')) "
SQLCmd3.Connection = SQLCon3
Dim reader3 As SqlClient.SqlDataReader = SQLCmd3.ExecuteReader()
reader3.Read()
'Find out how may slides there are for the above selection
Dim SQLCon2 As New SqlClient.SqlConnection
Dim SQLCmd2 As New SqlClient.SqlCommand
SQLCon2.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("SiBrassoCon")
SQLCon2.Open()
If reader3(0) = 5 Then
SQLCmd2.CommandText = ("SELECT COUNT(Cat_ID) as cnt FROM Pic_Cats INNER JOIN Pics ON Pic_Cats.Cat_ID = Pics.Pic_Cat where Pic_User = (SUBSTRING('" & querystr & "',17,(CHARINDEX('/','" & querystr & "',17))-17)) and Cat_Name = SUBSTRING('" & querystr & "',(CHARINDEX('/','" & querystr & "',17)+1), (CHARINDEX('/','" & querystr & "',(CHARINDEX('/','" & querystr & "',17)+1)))- (CHARINDEX('/','" & querystr & "',17)+1) ) Group by Pic_Cat ")
Else
If reader3(0) = 4 Then
SQLCmd2.CommandText = ("SELECT COUNT(Cat_ID) as cnt FROM Pic_Cats INNER JOIN Pics ON Pic_Cats.Cat_ID = Pics.Pic_Cat where Pic_User = (SUBSTRING('" & querystr & "',17,(CHARINDEX('/','" & querystr & "',17))-17)) Group by Pic_User")
Else
SQLCmd2.CommandText = ("SELECT COUNT(Cat_ID) as cnt FROM Pic_Cats INNER JOIN Pics ON Pic_Cats.Cat_ID = Pics.Pic_Cat ")
End If
End If
SQLCmd2.Connection = SQLCon2
Dim reader2 As SqlClient.SqlDataReader = SQLCmd2.ExecuteReader()
reader2.Read()
'Apply above number of slides to slide show
Dim imgSlide(reader2(0).ToString) As AjaxControlToolkit.Slide
'Create Dataset with slide info in it
Dim SQLCon As New SqlClient.SqlConnection
Dim SQLCmd As New SqlClient.SqlCommand
SQLCon.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("SiBrassoCon")
Dim Ds As New Data.DataSet
SQLCon.Open()
If reader3(0) = 5 Then
SQLCmd.CommandText = ("SELECT Row_Number() OVER(order by Pic_ID) as rowID, Pics.Pic_ID, Pics.Pic_Path, Pics.Pic_User + ' ' + Pic_Cats.Cat_Name AS Expr1, Pics.Pic_Disc FROM Pic_Cats INNER JOIN Pics ON Pic_Cats.Cat_ID = Pics.Pic_Cat where Pic_User = (SUBSTRING('" & querystr & "',17,(CHARINDEX('/','" & querystr & "',17))-17)) and Cat_Name = SUBSTRING('" & querystr & "',(CHARINDEX('/','" & querystr & "',17)+1), (CHARINDEX('/','" & querystr & "',(CHARINDEX('/','" & querystr & "',17)+1)))- (CHARINDEX('/','" & querystr & "',17)+1) ) ")
Else
If reader3(0) = 4 Then
SQLCmd.CommandText = ("SELECT Row_Number() OVER(order by Pic_ID) as rowID, Pics.Pic_ID, Pics.Pic_Path, Pics.Pic_User + ' ' + Pic_Cats.Cat_Name AS Expr1, Pics.Pic_Disc FROM Pic_Cats INNER JOIN Pics ON Pic_Cats.Cat_ID = Pics.Pic_Cat where Pic_User = (SUBSTRING('" & querystr & "',17,(CHARINDEX('/','" & querystr & "',17))-17)) ")
Else
SQLCmd.CommandText = ("SELECT Row_Number() OVER(order by Pic_ID) as rowID, Pics.Pic_ID, Pics.Pic_Path, Pics.Pic_User + ' ' + Pic_Cats.Cat_Name AS Expr1, Pics.Pic_Disc FROM Pic_Cats INNER JOIN Pics ON Pic_Cats.Cat_ID = Pics.Pic_Cat")
End If
End If
SQLCmd.Connection = SQLCon
Ds.Load(SQLCmd.ExecuteReader, LoadOption.OverwriteChanges, "Result")
'Add Slides to slide show
For I = 0 To Ds.Tables("Result").Rows.Count - 1
imgSlide((Ds.Tables("Result").Rows(I).Item("rowID") - 1)) = New AjaxControlToolkit.Slide(Ds.Tables("Result").Rows(I).Item("Pic_Path"), Ds.Tables("Result").Rows(I).Item("Expr1"), Ds.Tables("Result").Rows(I).Item("Pic_Disc"))
Next
Return (imgSlide)
End Function
First, try closing your readers/connections to sql;
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi
Thanks for the help, I have implemented the above and I still get the same issue. Its the same with chrome and simlar with firefox, but with firfox it starts to remove some of the cache so RAM usage stays at about 400-500mb which is still massive for a 30 pic slide show.
I've been reading and looking round and there seems to be a known issue with AJAX and memory leaks on page refreshes, but I dont know enough to get my head round any of the solutions.
Can you help at all?
Thanks
Brasso
Thanks for the help, I have implemented the above and I still get the same issue. Its the same with chrome and simlar with firefox, but with firfox it starts to remove some of the cache so RAM usage stays at about 400-500mb which is still massive for a 30 pic slide show.
I've been reading and looking round and there seems to be a known issue with AJAX and memory leaks on page refreshes, but I dont know enough to get my head round any of the solutions.
Can you help at all?
Thanks
Brasso