化繁爲簡,最簡易的SqlDataSource配合Cache使用~

最近一個小項目用了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();
        }
相關文章
相關標籤/搜索