最近一个小项目用了DevExpress控件,实践中DevExpress的控件确实很方便。缓存
在用ASPxGridView控件的时候,为了偷懒结合了SqlDataSource使用,但一直在大数据列表上表现的不太理想异步
本着最简洁优化的角度,翻了翻SqlDataSource的Cache属性,结合到项目使用效果还不错ide
Gird代码就不贴了,贴下SqlDataSource的配置:大数据
固然Cache还有其余的设置,好比设置缓存时间,和刷新策略,好比CacheExpirationPolicy=Sliding属性,可设置每次操做以后会重置缓存计数时间优化
这里主要使用的是CacheKeyDependency,用来和自动生成的缓存创建KEY依赖,更改了CacheKeyDependency的值就至关于从新创建了缓存~ spa
想当于手动刷新了缓存,知道这点你想何时刷新缓存数据均可以了~code
<asp:SqlDataSource ID="DSMain" runat="server" ConnectionString="<%$ ConnectionStrings:OraConnStr %>" ProviderName="<%$ ConnectionStrings:OraConnStr.ProviderName %>" EnableCaching="true" CacheKeyDependency="MyCacheKey"/>
Dev重加载,为了提示用户体验,使用了异步Callbackorm
<dx:ASPxButton ID="ASPxButton1" runat="server" Text="从新加载数据" AutoPostBack="false"> <ClientSideEvents Click="function validate(s, e) { var r=confirm('肯定要从新加载数据吗?') if (r!=true) e.processOnServer = false; else ReloadCallback.PerformCallback(); }" /> </dx:ASPxButton> <dx:ASPxCallback runat="server" ID="ReloadCallback" ClientInstanceName="ReloadCallback" OnCallback="ReloadCallback_OnCallback"> <ClientSideEvents CallbackComplete="function(s,e){ShowReloadResult(e);}"></ClientSideEvents> </dx:ASPxCallback>
protected void ReloadCallback_OnCallback(object source, CallbackEventArgs e) { Cache["MyCacheKey"] = DateTime.Now; e.Result = true.ToString(); }
function ShowReloadResult(e) { if (e.result == "True") if (confirm('从新加载成功,须要自动刷新页面吗~') == true) window.location.reload(); }