在作緩衝時使用SqlCacheDependency

來源:互聯網
上載者:User
請允許我先閑扯兩句。

今天發生了不少事情。首先,確認了我已經為20年後的技術社區做出了不可磨滅的貢獻。其次,[.NETRegex庫](http://regex-lib.net)終於去掉了令人惱火的驗證碼,轉而使用IP地址檢驗。最近兩篇blog我將介紹其中用到的一些技巧。

今天要說的是在緩衝時使用SqlCacheDependency。其應用情境是IP地址屏蔽,資料庫裡有一張表IPBlocked,記錄了被屏蔽的IP。由於每次進行註冊或嘗試登入時都要檢查IP,而IP屏蔽表又不會經常變化,所以需要使用緩衝。並且該緩衝依賴該資料表,即如果表中資料發生了變化,緩衝應該失效。

好睏啊,不多扯了,我這裡就給出操作步驟。

1. 修改web.config,啟用SqlCacheDependency。將下列代碼加入web.config的<system.web>節:

<caching>
    <sqlCacheDependency enabled="true">
        <databases>
            <add connectionStringName="regex_libConnectionString" name="IPBlockedDependency"/>
        </databases>
    </sqlCacheDependency>
</caching>

這裡的connectionStringName指定了在<connectionStrings>中添加的某一個連接字串。name則是為該SqlCacheDependency起的名字,這個名字將在第3步中用到。

2. 執行下述命令,為資料庫啟用緩衝依賴:

C:\Program Files\Microsoft Visual Studio 9.0\VC>aspnet_regsql -C "Data Source=.;Initial Catalog=regex-lib;Integrated Security=True" -ed -et -t "IPBlocked"

這裡-C後面的字串是連接字串(請替換成自己所需要的值),-t參數後面的字串是資料表的名字。命令執行後,資料庫中會多出一個AspNet_SqlCacheTablesForChangeNotification表。

3. 在代碼中使用緩衝,並為其設定SqlCacheDependency依賴:

private static string[] GetBlockedIPs()
{
    // 1嘗試從緩衝中讀取
    string[] ips = (string[])HttpContext.Current.Cache[BlockedIPCacheKey];

    if (ips != null)
        return ips;

    // 2從資料庫中讀取
    using (RxDataContext db = new RxDataContext())
    {
        ips = db.IPBlockeds.Select(ipb => ipb.UserIP).ToArray();
    }

    // 3放入緩衝
    SqlCacheDependency depend = new SqlCacheDependency("IPBlockedDependency", "IPBlocked");
    HttpContext.Current.Cache.Insert(BlockedIPCacheKey, ips, depend);

    return ips;
}

建立SqlCacheDependency時需要指定web.config中定義的SqlCacheDependency名字,並指定資料表的名稱。

好了,這隻是一個步驟列表,或者可以當作一個checklist用。

------

最後,[.NETRegex庫](http://regex-lib.net)在註冊、登入和發表回複時已經沒有什麼過多的限制了,歡迎大家訪問、註冊、把您的Regex分享進來。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.