PDA

View Full Version : روش استفاده از Caching در نمایش صفحات GridView



Developer Programmer
چهارشنبه 10 شهریور 1389, 17:23 عصر
میخوام به نوعی در هنگام استفاده از قابلیت Paging در GridView اطلاعات رو Cache کرده و از Cache بخونم تا Performance بالاتر بره.


اولا، به نظرتون، Caching رو درست نوشتم یا نه ؟
ثانیا،چه زمانی باید اطلاعات Cache رو Update کنم و چطور بفهمم که نیاز به Update داره؟
ثالثا، چطور میتونم بفهمم، بدون Cache از لحاظ اجرایی چقدر با Cache تفاوت کرده؟!

Public connString As String = "Data Source=AFSHIN-PC\SQL2008;Initial Catalog=nukedb;Persist Security Info=True;User ID=sa;Password=123"
Public ds As New SqlDataSource(connString, "Select * From tbz_FolderPermission")
'
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not IsPostBack Then

ds.DataBind()
If Cache("ds") Is Nothing Then
Cache("ds") = ds
End If

With grv
.AllowPaging = True
.AutoGenerateColumns = True
.DataSource = CType(Cache("ds"), SqlDataSource)
.DataBind()
End With
End If
End Sub

Protected Sub grv_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles grv.PageIndexChanging
grv.PageIndex = e.NewPageIndex
With grv
.DataSource = CType(Cache("ds"), SqlDataSource)
.DataBind()
End With
End Sub

Vahid_moghaddam
چهارشنبه 10 شهریور 1389, 17:41 عصر
زمانی که اطلاعات تغییر می کنند، شما باید cache رو update کنید. می تونید cache رو وابسته به زمان کنید. مثلا یک آیتم خاص که cache شده، 1 ساعت در cache باقی بمونه و بعد expire بشه. با این شرط، اون آیتم هر یک ساعت update می شه.
برای کنترل بهتر روی update شدن، باید از cache dependency ها استفاده کنید. در اینجا شما cache رو وابسته می کنید به یک شرط خاص. مثلا تغییر یک فایل text، یا هر فایل دیگه. یا وابسته می کنید به تغییر یک یا چند جدول در دیتابیس (sql dependency)