By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,647 Members | 1,178 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,647 IT Pros & Developers. It's quick & easy.

Cache dataset and expire

P: n/a
Hi,

I am storing a dataset in cache, which is happening fine. I can easily
retrive it at postback from the cache, cast it to a dataset and reuse it.
However I have specified that the cache expire in 5 minutes like so.

If Not IsPostBack Then
BindMyDropDown()
Else
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
'If the cache had expired I would expect this line to cause an
error -- but it doesn't even if I cause postback after 15 minutes!!!
dsMyDataset = CType(Cache("ds"), DataSet)
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))
End If

I also set the cache expire in exactly the same way in the BindMyDropDown()
function.
and place the dataset into the cache like so.

//code here
objConn.Open()
daMyDataAdapter.Fill(dsMyDataset, "Customers")
objConn.Close()
Cache.Insert("ds", dsMyDataset)
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))

DropDownList1.DataSource = dsMyDataset
DropDownList1.DataValueField =
dsMyDataset.Tables(0).Columns(0).ToString
DropDownList1.DataTextField =
dsMyDataset.Tables(0).Columns(1).ToString
DropDownList1.DataBind()

when a button is clicked and a postback is caused the button handler
retrieves the cache dataset and rebinds it to a combo box.
I would have thought that if the page was posted back any later than 5
minutes that an error would occur because the cache had expired, but it
doesn't.
The lack of this error indicates to me that the cache is not expiring, but I
do not know what I am doing wrong.
How do I make the cache expire in 5 minutes.

cheers

martin


Nov 17 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
You may be pulling some info from ViewState, which would pull the values
despite the cache being refreshed. Turn off ViewState to test this behavior.

--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

************************************************** ********************
Think Outside the Box!
************************************************** ********************
"martin" <ma***********@hotmail.com> wrote in message
news:uA**************@tk2msftngp13.phx.gbl...
Hi,

I am storing a dataset in cache, which is happening fine. I can easily
retrive it at postback from the cache, cast it to a dataset and reuse it.
However I have specified that the cache expire in 5 minutes like so.

If Not IsPostBack Then
BindMyDropDown()
Else
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
'If the cache had expired I would expect this line to cause an
error -- but it doesn't even if I cause postback after 15 minutes!!!
dsMyDataset = CType(Cache("ds"), DataSet)
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))
End If

I also set the cache expire in exactly the same way in the BindMyDropDown() function.
and place the dataset into the cache like so.

//code here
objConn.Open()
daMyDataAdapter.Fill(dsMyDataset, "Customers")
objConn.Close()
Cache.Insert("ds", dsMyDataset)
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))

DropDownList1.DataSource = dsMyDataset
DropDownList1.DataValueField =
dsMyDataset.Tables(0).Columns(0).ToString
DropDownList1.DataTextField =
dsMyDataset.Tables(0).Columns(1).ToString
DropDownList1.DataBind()

when a button is clicked and a postback is caused the button handler
retrieves the cache dataset and rebinds it to a combo box.
I would have thought that if the page was posted back any later than 5
minutes that an error would occur because the cache had expired, but it
doesn't.
The lack of this error indicates to me that the cache is not expiring, but I do not know what I am doing wrong.
How do I make the cache expire in 5 minutes.

cheers

martin

Nov 17 '05 #2

P: n/a
I am not sure about datasets but with datatables and dataviews, if the cache
is empty it just returns nothing but does not generate an error. You can see
exactly what is in the cache by using the following

dim strCacheContents as String
dim objItem as DictionaryEntry
dim strName as String
For Each objItem In Cache
strName = objItem.Key.tostring()
strCacheContents = "key=" & strName & "<br />"
Response.Write(strCacheContents)
strCacheContents = "value=" & Convert.ToString(objItem.Value) & "<br/>"
Response.Write(strCacheContents)

Next
"martin" <ma***********@hotmail.com> wrote in message
news:uA**************@tk2msftngp13.phx.gbl...
Hi,

I am storing a dataset in cache, which is happening fine. I can easily
retrive it at postback from the cache, cast it to a dataset and reuse it.
However I have specified that the cache expire in 5 minutes like so.

If Not IsPostBack Then
BindMyDropDown()
Else
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
'If the cache had expired I would expect this line to cause an
error -- but it doesn't even if I cause postback after 15 minutes!!!
dsMyDataset = CType(Cache("ds"), DataSet)
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))
End If

I also set the cache expire in exactly the same way in the BindMyDropDown() function.
and place the dataset into the cache like so.

//code here
objConn.Open()
daMyDataAdapter.Fill(dsMyDataset, "Customers")
objConn.Close()
Cache.Insert("ds", dsMyDataset)
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))

DropDownList1.DataSource = dsMyDataset
DropDownList1.DataValueField =
dsMyDataset.Tables(0).Columns(0).ToString
DropDownList1.DataTextField =
dsMyDataset.Tables(0).Columns(1).ToString
DropDownList1.DataBind()

when a button is clicked and a postback is caused the button handler
retrieves the cache dataset and rebinds it to a combo box.
I would have thought that if the page was posted back any later than 5
minutes that an error would occur because the cache had expired, but it
doesn't.
The lack of this error indicates to me that the cache is not expiring, but I do not know what I am doing wrong.
How do I make the cache expire in 5 minutes.

cheers

martin

Nov 17 '05 #3

P: n/a
You might also use this syntax.

Cache.Insert ("yourname",yourdatasetvariable,New CacheDependency(filepath)
or Nothing ,DateTime.MaxValue, TimeSpan.FromMinutes(5))

I am not sure but I thought the response.cache ... applies to the whole
control or page not the item being named in the cache insert line, but I am
not expert. When I have used the response.cache I usually have several
other lines as follows (but this is for an entire page)

Response.Cache.SetExpires(DateTime.Now.AddSeconds( intCacheTime))
Response.Cache.SetCacheability(HttpCacheability.Pu blic)
Response.Cache.SetValidUntilExpires(True)
Response.Cache.VaryByParams("_p") = True
Response.Cache.VaryByParams("_h") = True
Response.Cache.VaryByParams("_c") = True

"martin" <ma***********@hotmail.com> wrote in message
news:uA**************@tk2msftngp13.phx.gbl...
Hi,

I am storing a dataset in cache, which is happening fine. I can easily
retrive it at postback from the cache, cast it to a dataset and reuse it.
However I have specified that the cache expire in 5 minutes like so.

If Not IsPostBack Then
BindMyDropDown()
Else
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
'If the cache had expired I would expect this line to cause an
error -- but it doesn't even if I cause postback after 15 minutes!!!
dsMyDataset = CType(Cache("ds"), DataSet)
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))
End If

I also set the cache expire in exactly the same way in the BindMyDropDown() function.
and place the dataset into the cache like so.

//code here
objConn.Open()
daMyDataAdapter.Fill(dsMyDataset, "Customers")
objConn.Close()
Cache.Insert("ds", dsMyDataset)
Response.Write("<hr>Cache Expires 5 minutes" &
DateTime.Now.AddSeconds(300) & "<hr>")
Response.Cache.SetExpires(DateTime.Now.AddSeconds( 300))

DropDownList1.DataSource = dsMyDataset
DropDownList1.DataValueField =
dsMyDataset.Tables(0).Columns(0).ToString
DropDownList1.DataTextField =
dsMyDataset.Tables(0).Columns(1).ToString
DropDownList1.DataBind()

when a button is clicked and a postback is caused the button handler
retrieves the cache dataset and rebinds it to a combo box.
I would have thought that if the page was posted back any later than 5
minutes that an error would occur because the cache had expired, but it
doesn't.
The lack of this error indicates to me that the cache is not expiring, but I do not know what I am doing wrong.
How do I make the cache expire in 5 minutes.

cheers

martin

Nov 17 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.