.NET 數據庫緩存依賴策略實現

處理大型門戶網站 一般都需要 使用緩存技術這個web加速器
在 PHP 和 java 一般 使用的是 基于squid 來做.
當然在 windows .NET 平臺也是可以的 squid有 windows版本.
這個以后再去研究,現在 就介紹一下 .NET 自帶的 緩存策略.Microsoft的petshop就用到了它;
  一、基于數據庫觸發(設置緩存依賴策略,當數據庫中數據發生變化時,觸發緩存失效;但微軟提供的解決方案目前僅支持SQL Server,如果是ORACLE需要自己實現觸發接口)。
  二、基于文件依賴的策略(可以設置緩存依賴于文件中的具體鍵值,當數據更新時,更新文件鍵值迫使緩存失效)。

然后 然后?

  前面兩種 當然 和 頁面緩存不同. 頁面緩存 可能呈現的是已經過期的內容. 而緩存策略輪詢 基本上都是 最新的內容.

  下面我們來一步步的實現這個過程吧:
    首先 命令 cmd

    打開DOS 界面

?
cd D:\Windows\Microsoft.NET\Framework\v2.0.50727

  注意:這里是系統安裝路徑.

  然后? 這里我們給數據庫fjmr_db設置緩存策略依賴.

?
aspnet_regsql -C "Data Source=.\SQLSERVER05;Integrated Security=True;Initial Catalog=fjmr_DB" -ed  

  然后 這里我們對表N_News注入依賴(當表N_News有增刪改操作 就緩存失效)

?
aspnet_regsql -C "Data Source=localhost;Integrated Security=True;Initial Catalog=fjmr_DB" -et -t N_News

? 然后 在web.config下 配置 緩存策略節點

復制代碼
1 <caching>
2 <!-- 設置數據庫 緩存依賴策略 輪詢時間 ms 是否啟用-->
3 <sqlCacheDependency pollTime="5000" enabled="true">
4 <databases>
5 <!--數據庫名稱, 數據庫鏈接, 輪詢時間 ms-->
6 <add name="fjmr_db" connectionStringName="數據庫鏈接配置" pollTime="5000"/>
7 </databases>
8 </sqlCacheDependency>
9
10 </caching>
復制代碼

  配置好輪詢SQL緩存依賴后,就能對頁面輸出緩存使用SQL依賴了。
  下面是頁面緩存失效時間 9999秒! ,也就是說數據庫沒有更新的話9999秒都不會讀庫.
  當然如果數據庫N_News如果更新了.那么頁面就馬上會刷新了!

1 <%@ Page Language="C#" %>
2 ?<%@ OutputCache Duration="9999" VaryByParam="none"
3 SqlDependency="fjmr_db:N_News" %>

如果希望讓一個頁面依賴多個數據庫表,則需要將sqlDependecy特性設置為一組用分號分隔的數據庫和數據庫表名的列表。

如 :fjmr_db:N_News;fjmr_db:其他表

  也可以在一個用戶控件中使用<%@ OutputCache %> 指令來使用輪詢SQL緩存依賴。
  也就是說,可以使用輪詢SQL緩存依賴來實現部分頁面緩存。
  要對SqlDataSource和ObjectDataSource控件使用輪詢SQL緩存依賴,只需要設置sqlCache- Dependency屬性。
  數據庫名必須與配置在Web配置文件<sqlCacheDependency>元素中的數據庫名相對應!

復制代碼
<asp:SqlDataSource
id="srcNews"
ConnectionString
="<%$ ConnectionStrings:News %>"
SelectCommand
="SELECT * FROM N_News"
EnableCaching
="true"
SqlCacheDependency
="fjmr_db:N_News"
OnSelecting
="srcNews_Selecting"
Runat
="server" />
復制代碼

我們也可以對Cache對象使用輪詢SQL緩存依賴,用SqlCacheDependency對象來代表一個輪詢SQL緩存依賴。
  當DataTable添加到Cache時,該類就用作Cache.Insert()的一個參數。
  如果需要創建多個數據庫表的依賴,
  則需要創建多個SqlCacheDependency對象并用Aggregate- CacheDependency類的實例表示多個依賴。

復制代碼
1 DataTable news = (DataTable)Cache["_News"];
2 ?if (news == null)
3 {
4 news = GetNewsFromDB();
5 SqlCacheDependency sqlDepend = new
6 SqlCacheDependency("MyDatabase", "_News");
7 Cache.Insert("_News", news, sqlDepend);
8 }
9 grdNews.DataSource = news;
10 grdNews.DataBind();
11 }
復制代碼

  最后 這種緩存策略只適用于一般 中小型的 緩存加速. 如果對大型系統 做的話 很多時候是用到了 NoSQL技術,分布式緩存服務器.

轉載于:https://www.cnblogs.com/ajunForNet/p/4332257.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257570.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257570.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257570.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大數據面臨的挑戰:當大數據遭遇云計算

本文講的是大數據面臨的挑戰&#xff1a;當大數據遭遇云計算,大數據正在徹底改變IT世界。那么&#xff0c;什么樣的數據談得上數據呢? 根據IDC的報告&#xff0c;未來十年全球大數據將增加50倍。僅在2011年&#xff0c;我們就將看到1.8ZB(也就是1.8萬億GB)的大數據創建產生。這…

Climbing Stairs - Print Path

stair climbing&#xff0c; print out all of possible solutions of the methods to climb a stars, you are allowed climb one or two steps for each time; what is time/space complexity? &#xff08;use recursion&#xff09; 這道題難是難在這個ArrayList<Strin…

java 單例設計_Java 之單例設計模式

設計模式: 對問題行之有效的解決方式, 其實它是一種思想.單例設計模式解決的問題:就是可以保證一個類在內存中的對象唯一性. 即單個實例.比如對于A 和 B 兩個程序使用同一個配置信息對象時, A 對配置信息作出修改, B 也與之對應的更新配置信息, 即需要保證該對象的唯一性.如何保…

Javascript之RegExp

RegExp對象的構造器 new RegExp(pattern[, flags]) pattern 正則表達式文本flags 該參數可以是下面幾個值的任意組合&#xff1a;g 全局匹配i 忽略大小寫m 讓開始和結束字符&#xff08;^ 和 $&#xff09;工作在多行模式&#xff08;也就是&#xff0c;^ 和 $ 可以匹配字符串中…

DS汽車通過采用沉浸式虛擬現實技術實現展廳轉型

PSA集團&#xff08;PSA Group&#xff09;旗下的高端品牌DS汽車公司&#xff08;DS Automobiles&#xff09;采用達索系統的“虛擬車庫&#xff08;Virtual Garage&#xff09;”行業解決方案為全新的SUV車型DS 7 CROSSBACK提供全面支持&#xff0c;推動其展廳轉型&#xff0c…

java 日歷記事本_calendar 一個用java編寫的日歷記事本. 具有正常日歷功能;也可以用于在不同日期記錄下當日重要的事情 - 下載 - 搜珍網...

日歷記事本/日歷記事本/build/classes/日歷記事本/CalendarPad$1.class日歷記事本/日歷記事本/build/classes/日歷記事本/CalendarPad.class日歷記事本/日歷記事本/build/classes/日歷記事本/Month.class日歷記事本/日歷記事本/build/classes/日歷記事本/NotePad.class日歷記事…

要的需求 ip提取網站源碼帶采集 要求是PHP源碼

求。ip提取網站源碼帶采集 要求是PHP源碼。必須帶采集類似 小峰IP提取網站&#xff0c;安小莫IP提取&#xff0c;迷惘IP提取&#xff0c;冰封IP提取免費類型的 不要淘寶類型的 200 轉載于:https://www.cnblogs.com/PS-apple/p/4342866.html

設計模式之PHP項目應用——單例模式設計Memcache和Redis操作類

1 單例模式簡單介紹 單例模式是一種經常使用的軟件設計模式。在它的核心結構中僅僅包括一個被稱為單例類的特殊類。通過單例模式能夠保證系統中一個類僅僅有一個實例并且該實例易于外界訪問。從而方便對實例個數的控制并節約系統資源。假設希望在系統中某個類的對象僅僅能存…

java 跳轉action_JS 跳轉到指定Action | 學步園

最近項目需要在JS中跳轉到指定的Action。通過不斷的實驗和查資料&#xff0c;終于成功。Java SSH2 架構下&#xff0c;正常 配置Action完畢。在xxx.jsp下window.location" ";例如&#xff1a;window.location" /user/ResAction> ";其中ResAction是配置文…

【轉】康拓展開

———本文轉自&#xff1a;http://www.cnblogs.com/1-2-3/archive/2011/04/25/generate-permutation-part2.html 1、康托展開  康托展開的公式是 Xan*(n-1)!an-1*(n-2)!...ai*(i-1)!...a2*1!a1*0! 其中&#xff0c;ai為當前未出現的元素中是排在第幾個&#xff08;從0開始&a…

java類排序

1、實現Comparator接口 public static class ComparatorImpl implements Comparator<Element>{Overridepublic int compare(Element o1, Element o2) {if(o1.unitPrice > o2.unitPrice)return 1;else if(o1.unitPrice < o2.unitPrice){return -1;}else{return 0;}}…

java jni so_java 用jni調用so全過程

這幾天一直在研究JNI的開發過程&#xff0c;順便把NDK環境搭建一起總結下。在windows環境下開發jni需要c/c編譯器的支持&#xff0c;網絡上我看很多人使用cygwin。呵呵我不是很喜歡使用它&#xff0c;感覺安裝起來挺麻煩的。我使用GNUStep&#xff0c;下載地址http://www.gnust…

ios開發之 -- 自動輪播圖創建

這里是oc版本的&#xff0c;簡單記錄下&#xff1a; 具體代碼如下&#xff1a; 1&#xff0c;準備 #define FRAME [[UIScreen mainScreen] bounds] #define WIDTH FRAME.size.width #define HEIGHT FRAME.size.height 2&#xff0c;具體實現 //scrollview的添加_bigScrollView…

學習進度(2016.3.13)

第二周所花時間&#xff08;包括上課&#xff09;14小時代碼量&#xff08;行&#xff09;138行博客量&#xff08;篇&#xff09;4篇了解到的知識點動態數組的定義初始化和使用&#xff0c;指定范圍獲得隨機數轉載于:https://www.cnblogs.com/zzcs/p/5272365.html

binaryoperator java_BinaryOperatorT接口的用法示例

java Function函數中的BinaryOperator接口用于執行lambda表達式并返回一個T類型的返回值&#xff0c;下面的BinaryOperator用法示例讓你簡單了解一下。import java.util.function.BinaryOperator;public class TestDemo {public static void main(String[] args) {BinaryOperat…

線性表的順序存儲結構之順序表類的實現_Java

在上一篇博文——線性表接口的實現_Java中&#xff0c;我們實現了線性表的接口&#xff0c;今天讓我們來實現線性表的順序存儲結構——順序表類。 首先讓我們來看下順序表的定義&#xff1a; 線性表的順序存儲是用一組連續的內存單元依次存放線性表的數據元素&#xff0c;元素在…

Linux下安裝jdk

參考于&#xff1a;http://www.cnblogs.com/caosiyang/archive/2013/03/14/2959087.html 一、準備階段 ①下載jdk-6u45-linux-i586.bin&#xff0c;通過xftp上傳至Linux系統中 ②在命令行執行 ./jdk-6u45-linux-i586.bin&#xff0c;生成目錄jdk1.6.0_45 ③移動到/usr/share下&…

JDK source 之 ArrayList 需要注意事項

線程安全 ArrayList內部沒有實現原子性操作&#xff0c;所以是非線程安全的。如果需要在線程安全的環境下使用List的話&#xff0c;需要使用Vector 或者CopyOnWriteArrayList&#xff0c;具體場景&#xff0c;自行深入了解。 擴容算法 // minCapacity 為需要的最小容量 private…

為Tiny4412設備驅動在proc目錄下添加一個可讀版本信息的文件

http://blog.csdn.net/morixinguan/article/details/77808088 上節&#xff0c;我們明白了proc文件系統的作用&#xff0c;接下來我們在友善之臂已經寫好的led驅動的基礎上&#xff0c;在proc目錄下創建一個文件夾&#xff0c;然后加入led驅動的版本信息讀取。 我們在init函數的…

java audiorecord_Android 錄音實現(AudioRecord)

上一篇文章介紹了使用 MediaRecorder 實現錄音功能 Android錄音實現(MediaRecorder) &#xff0c;下面我們繼續看看使用 AudioRecord 實現錄音功能。AudioRecord首先看看Android幫助文檔中對該類的簡單概述: AndioRecord 類的主要功能是讓各種 Java 應用能夠管理音頻資源&#…