日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

談web中緩存的使用_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:關(guān)于IronPython和C#執(zhí)行速度對(duì)比
其實(shí)我自己對(duì)執(zhí)行速度這個(gè)問題本來并沒有什么興趣,因?yàn)橐郧暗慕?jīng)驗(yàn)告訴我:除非是運(yùn)算密集型的程序,否則腳本語言和編譯型語言使用起來速度沒有多大差別。但是我們公司有個(gè)人知道我的想法以后,天天在我耳邊嚷嚷腳本運(yùn)行速度太慢,那好吧,讓我用實(shí)驗(yàn)來說服

很多人都知道什么叫緩存,甚至學(xué)習(xí)過,但用起來還真難用。我經(jīng)過幾天的學(xué)習(xí)cache想跟大家分享和討論。

我是帶著疑問去學(xué)習(xí)的。緩存是用在什么地方,有什么好處。

緩存就是把獲取的數(shù)據(jù)暫時(shí)存到緩存中,當(dāng)獲取的數(shù)據(jù)沒有變化時(shí)就還是用緩存里的東西�?赡苡腥藭�(huì)問怎么判斷獲取的數(shù)據(jù)沒有變化?這個(gè)等下會(huì)說到。這樣從緩存數(shù)據(jù)可是獲取數(shù)據(jù)速度快很多,但要求數(shù)據(jù)不時(shí)時(shí)常變化的。像博客園里的博客排行榜,基本沒變化,這是雖是數(shù)據(jù)不怎么變化,但這樣頁面每個(gè)人瀏覽都是一樣的東西,那又何必用緩存干什么呢?直接把此頁面生成html,這樣打開的速度比用緩存還快。

當(dāng)一個(gè)頁面既有公共部分(每個(gè)人瀏覽的都一樣)又有個(gè)性部分(自己的信息)。比如當(dāng)當(dāng)網(wǎng)里就有個(gè)購(gòu)物車當(dāng)你購(gòu)?fù)晡飼r(shí),底單上面有推薦買的產(chǎn)品(這也產(chǎn)品可能一天換一次),當(dāng)然推薦的產(chǎn)品跟你買的產(chǎn)品有關(guān),此時(shí)不能生成html了,因?yàn)椴皇敲總(gè)人瀏覽此頁面都相同,只有當(dāng)用戶買的產(chǎn)品相關(guān)到推薦的產(chǎn)品相同時(shí)。此時(shí)就要用緩存存此推薦產(chǎn)品的數(shù)據(jù),當(dāng)然這個(gè)緩存鍵值是跟買的產(chǎn)品有關(guān),只要買的產(chǎn)品相關(guān)得到的推薦產(chǎn)品(這里面有一種關(guān)系在里面)才能該緩存的東西。

打個(gè)比方:當(dāng)你買書時(shí)就會(huì)推薦其他好書給你,此時(shí)買書的推薦書都一樣,調(diào)用的緩存都一樣,而買電腦的話可能會(huì)推薦你各種好電腦給你,這時(shí)調(diào)用推薦電腦的緩存。

上面可能講了下緩存用在什么地方,當(dāng)然我只知道這種情況,可能還有其他情況,那位知道可評(píng)論下。

緩存的好處當(dāng)然是減輕服務(wù)器的負(fù)擔(dān),加快瀏覽速度。但如果緩存用得不好,可能得到的數(shù)據(jù)是過時(shí)的,或者反而使瀏覽熟讀更慢。(當(dāng)你緩存經(jīng)常變化的數(shù)據(jù)時(shí))

緩存有分客戶端緩存服務(wù)器端緩存嗎?

兩個(gè)都有,只是客戶端緩存內(nèi)嵌在瀏覽器中,基本上是瀏覽器自動(dòng)處理緩存。

客戶端緩存可以有效地減輕服務(wù)器端負(fù)載。首先了解一下 HTTP 頭:Last-Modified 與 If-Modified-Since。簡(jiǎn)單的說,Last-Modified 與If-Modified-Since 都是用于記錄頁面最后修改時(shí)間的 HTTP 頭信息,只是 Last-Modified 是由服務(wù)器往客戶端發(fā)送的 HTTP 頭,而 If-Modified-Since 則是由客戶端往服務(wù)器發(fā)送的頭實(shí)現(xiàn)。

在瀏覽器可設(shè)置瀏覽器如何使用緩存的。一般默認(rèn)是自動(dòng)。操作步驟如下:

工具-》internet選項(xiàng)-》常規(guī)-》設(shè)置-》檢查網(wǎng)頁的較新版本中有四個(gè)選項(xiàng)來控制緩存的運(yùn)用

當(dāng)然代碼可控制客戶端緩存,比如比想要瀏覽器緩存東西可用下面代碼

html禁用客戶端緩存

<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1978 08:21:57 GMT">

 

C#中禁止cache的方法!
Response.Buffer = true;
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";

我對(duì)客戶端緩存知道太少,而且我們寫程序也很少寫客戶端緩存, 希望有人提供更多關(guān)于客戶端緩存的東西。

 

服務(wù)端緩存有System.Web.Caching.cahe和memcached

當(dāng)然System.Web.Caching.cahe是微軟寫的類,而memcached是第三方插件。System.Web.Caching.cache目前還不是分布式緩存,只能在一臺(tái)電腦上(07時(shí)候),而

memcached是分布式的高速緩存。

服務(wù)器緩存可分為三種緩存

1.輸出緩存:

要實(shí)現(xiàn)頁面輸出緩存,只要將一條 OutputCache 指令添加到頁面即可�! �
  <%@ OutputCache Duration="60" VaryByParam="*" %>  
  如同其他頁面指令一樣,該指令應(yīng)該出現(xiàn)在 ASPX 頁面的頂部,即在任何輸出之前。它支持五個(gè)屬性(或參數(shù)),其中兩個(gè)是必需的�!�
  Duration
  必需屬性。頁面應(yīng)該被緩存的時(shí)間,以秒為單位。必須是正整數(shù)�!�
  Location
  指定應(yīng)該對(duì)輸出進(jìn)行緩存的位置。如果要指定該參數(shù),則必須是下列選項(xiàng)之一:Any、Client、Downstream、None、Server ServerAndClient�!�
  VaryByParam
   必需屬性。Request 中變量的名稱,這些變量名應(yīng)該產(chǎn)生單獨(dú)的緩存條目。"none" 表示沒有變動(dòng)。"*" 可用于為每個(gè)不同的變量數(shù)組創(chuàng)建新的緩存條目。變量之間用 ";" 進(jìn)行分隔�! �
  VaryByHeader
   基于指定的標(biāo)頭中的變動(dòng)改變緩存條目�! �
  VaryByCustom
   允許在 global.asax 中指定自定義變動(dòng)(例如,"Browser")。

 

2.片段緩存:

示例

<%@ OutputCache Duration="60" VaryByParam="*" %> 該示例將緩存用戶控件60秒,并且將針對(duì)查詢字符串的每個(gè)變動(dòng)、針對(duì)此控件所在的每個(gè)頁面創(chuàng)建單獨(dú)的緩存條目。<%@ OutputCache Duration="60" VaryByParam="none"
VaryByControl="CategoryDropDownList" %> 該示例將緩存用戶控件60秒,并且將針對(duì)CategoryDropDownList控件的每個(gè)不同的值、針對(duì)此控件所在的每個(gè)頁面創(chuàng)建單獨(dú)的緩存條 目。<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"
Shared="true" %>

最后,該示例將緩存用戶控件60秒,并且將針對(duì)每個(gè)瀏覽器名稱和主要版本創(chuàng)建一個(gè)緩存條目。然后,每個(gè)瀏覽器的緩存條目將由引用此用戶控件的所有頁面共享(只要所有頁面都用相同的ID引用該控件即可)。

 

3.編程用得最多的緩存:數(shù)據(jù)緩存

System.Web.Caching.cahehttpRuntime.CacheHttpContext.Current.Cache實(shí)例化。httpRuntime.Cache,HttpContext.Current.Cache是內(nèi)置對(duì)象就想當(dāng)與seesion。

 

HttpContext.Current.CacheHttpRuntime.Cache區(qū)別:

HttpContext.Current.Cache:為當(dāng)前 HTTP 請(qǐng)求獲取Cache對(duì)象。 HttpRuntime.Cache:獲取當(dāng)前應(yīng)用程序的Cache。HttpContext.Current.Cache是調(diào)用了 HttpRuntime.Cache,且HttpContext.Current.Cache是用在web程序上,而HttpRuntime.Cache是用在任何程序上。System.web命名空間下。

其實(shí)HttpContext.Current.Cache是通過 HttpRuntime.Cache來實(shí)現(xiàn)的,所以一般實(shí)例化最好通過HttpRuntime.Cache來實(shí)例化:

例如:System.Web.Caching.Cache cache = HttpRuntime.Cache

 

System.Web.Caching.Cache有很多方法,但方法中add中是存緩存

參數(shù)中有緩存時(shí)間,依賴項(xiàng)。

緩存時(shí)間即到當(dāng)緩存的東西達(dá)到指定時(shí)間就讓緩存失效,而依賴項(xiàng)是當(dāng)依賴項(xiàng)發(fā)生變化就會(huì)使緩存失效。

依賴項(xiàng)有一般依賴項(xiàng) CacheDependency和數(shù)據(jù)庫依賴項(xiàng)SqlCacheDependency。

雖然CacheDependency類完成了很重要的功能,但其組成結(jié)構(gòu)卻比較簡(jiǎn)單,主要有兩個(gè)屬性和一個(gè)方法。
屬性“HasChanged”:判斷CacheDependency對(duì)象是否已更改。
屬性“UtcLastModified”:返回上次依賴項(xiàng)的修改日期
方法“Dispose”:釋放CacheDependency對(duì)象所占有的資源。因?yàn)榫彺骖惱^承了接口“IDispose”,所以必須實(shí)現(xiàn)此方法。

CacheDependency

例如 Cache.Insert("key", myXMLFileData, DateTime.Now.AddMinutes(1),,new
System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));

users.xml文件就相當(dāng)一般依賴項(xiàng),當(dāng)xml文件被改了,則此緩存失效。

SqlCacheDependency一般是增對(duì)數(shù)據(jù)庫的,這個(gè)設(shè)置需要在config里設(shè)置,而且還要啟動(dòng)數(shù)據(jù)庫的這樣服務(wù)。

Cache.Insert 中可設(shè)置跟數(shù)據(jù)庫中那個(gè)表關(guān)聯(lián),一旦表有變化就會(huì)導(dǎo)致cache失效。

可到網(wǎng)上查詢?nèi)绾问褂?/span>

 

分享:解讀在Visual C# .NET中跟蹤和調(diào)試
本文介紹如何使用 Debug 和 Trace 類。Microsoft .NET Framework 中提供了這兩個(gè)類。在應(yīng)用程序開發(fā)期間或部署到產(chǎn)品后,可以使用這兩個(gè)類提供有關(guān)應(yīng)用程序性能的信息。這兩個(gè)類只是 .NET Framework 中所提供配置功能的一部分。 要求下面的列表概括了推薦的

來源:模板無憂//所屬分類:.Net教程/更新時(shí)間:2009-08-13
相關(guān).Net教程