最近一個小項目用了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(); }