我有一个我一直在使用的页面,它提供了大量数据供人们查看。关于每分钟的数据更新...因此,为了减少服务器负载,我将页面缓存60秒:
'-----Set Cache
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Server)
Response.Cache.SetValidUntilExpires(True)
'---------------
这很有效......但现在我添加了一个asp.net Timer并将间隔设置为30秒进行测试。
我在页面上有一个时间戳,当timer.tick事件发生并更新updatepanel时,时间戳正在改变。
Protected Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick
updatePanel.Update()
End Sub
在计时器之前,由于缓存,时间戳在浏览器刷新时保持不变。现在看来他们正在更新每个tick事件(消除缓存的目的)。
即使在并排的2个浏览器中,每个浏览器的每次更新都会更新时间戳......
所以看起来计时器丢失了缓存而无法达到目的。
有谁知道如何解决这个问题? 该页面没有任何控件(按钮,下拉列表等),它只显示网格中的数据(以编程方式插入的多个用户控件实例)。
答案 0 :(得分:1)
您添加的内容 - 基本上缓存了页面的GET
请求。 POST
(计时器触发时)通常不会被缓存。我建议您不缓存实际页面,但'大量数据'的结果。请看一下HttpRuntime.Cache
Should I use HttpRuntime.Cache?