aspnet緩存
① asp.net怎麼設置瀏覽器客戶端緩存
1. Expires:+過期時間
表示在指定時間後瀏覽器緩存失效,需要注意的是這兒的過期時間必須是HTTP格式的日期時間,其他的都會被解析成當前時間「之前」,緩存會馬上過期,HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:
② ASP.NET 數據緩存有什麼用 應該怎麼用
頁面緩存
使用OutputCache指令。
<%@ OutputCache Duration="3600"
Location="Any"
VaryByCustom="browser"
VaryByParam="RequestID" %>
其中Duration和VaryByParam特性是必須的。
Duration允許我們控制頁面在緩存中生存的時間(單位是秒)
VaryByParam允許我們緩存頁面的不同版本。在上面的例子中,VaryByParam設為了RequestID,所以ASP.NET使用RequestID參數的不同值,這些值或者是在HTTP GET的查詢字元串中傳入,或者是在HTTP POST的參數中傳入。可以通過檢查RequestID參數的值讓應用程序區分不同的用戶;通過在頁面的OutputCache指令中放置 VaryByParam="RequestID",可以讓ASP.NET為每個用戶緩存頁面的不同版本。
如果不想根據參數的值緩存頁面的不問版本,那麼只要把VaryByParam設為none。
也可以要求ASP.NET為每個可能的參數組合緩存頁面的一個版本。為此,可把VaryByParam設為*。
③ ASP.NET緩存常見的4種方式有哪些
1、分布式緩存Memcached
2、內存緩存,此佔用伺服器資源
3、XML緩存,這種最為常見
4、DATATABLE緩存
④ asp.net什麼情況使用緩存
有以下幾條緩存數據的規則。
第一,數據可能會被頻繁的被使用,這種數據可以緩存。
第二,數據的訪問頻率非常高,或者一個數據的訪問頻率不高,但是它的生存周期很長,這樣的數據最好也緩存起來。
第三是一個常常被忽略的問題,有時候我們緩存了太多數據,通常在一台X86的機子上,如果你要緩存的數據超過800M的話,就會出現內存溢出的錯誤。所以說緩存是有限的。換名話說,你應該估計緩存集的大小,把緩存集的大小限制在10以內,否則它可能會出問題。在Asp.net中,如果緩存過大的話也會報內存溢出錯誤,特別是如果緩存大的DataSet對象的時候。
你應該認真分析你的程序。根據實際情況來看哪裡該用,哪裡不該用。如:cache用得過多也會增大伺服器的壓力。整頁輸出緩存,又會影響數據的更新。
按照你舉例的論壇來看。首頁為什麼要用緩存呢?訪問量真的很大那為什麼不用靜態的技術呢?很多東西為什麼一定要在緩存裡面專呢?條條大路通羅馬!用靜態速度比緩存快得多吧。
⑤ .NET中的緩存有幾種
.NET中的緩存(僅供參考)
一.Output Caching (輸出緩存)
當一個網頁頻繁被訪問的時候,可以通過把整個網頁緩存來提高執行效率。這樣做的優點是,當用戶再次訪問這個網頁的時候,被格式化好的HTML會被直接顯示。
Output Caching 定製的兩種方法:
1.基於底層的API技術
2.基於高層的@OutputCaching
一旦Output Caching 被定製過,那麼這個網頁就會在第一次被訪問的時候生成cache,直到請求過期為止。
二.Page Fragment Caching (回調緩存)
作為Output的緩存的附加功能,還提供一種緩存技術,專門用於緩存用戶控制項或者網頁中的一部分東西。可以指定沒一部分或者某一個區域不被緩存。
在頁面中,指定返回參數,來決定控制項被緩存的部分。使用語句VaryBym語句指定控制項更具參數來改變。
三.Data Caching (數據緩存)
ASP.NET提供了一種非常快捷的方法進行資料庫緩存,用戶可以非常方便的對頁面變數進行緩存。並以此提高程序效率。
一個頁面變數的緩存生命周期與應用程序的緩存生命周期相同。
同時對後台數據進行修改的時候,還需要對Cache進行相應的處理。
四.SQL Cache (配置連接池,提高數據緩存)
通過配置資料庫連接池,只有當資料庫數據被改變的時候,緩存才會改變。
五.Cache Configuration (配置緩存)
⑥ Asp.Net WEb中怎麼清空緩存
我也想知道- -!!
如果要清空也頁面輸出緩存,可以通過增加幾行代碼實現
Response.Buffer = true;
Response.Expires = 0;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.AddHeader("pragma", "no-cache");
Response.AddHeader("cache-control", "private");
Response.CacheControl = "no-cache";
或者設置<%@ OutputCache %> //具體的設置搜索下吧..
如果是ajax請求的,可以在請求的地址後面加隨機參數
如果是Cache里的緩存,剛看到幾行代碼
IDictionaryEnumerator cacheEnmu = HttpRuntime.Cache.GetEnumerator();
while (cacheEnmu.MoveNext())
{
HttpRuntime.Cache.Remove(cacheEnmu.Key.ToString());
}
⑦ asp.net cache如何使用
這要看你想怎麼用。是否用到其復雜的特性。比如:依賴項過期;移除通知。
如果都不用到。完全可以像session一樣使用
HttpRuntime.Cache["key"]=value;
objectvalue=HttpRuntime.Cache["key"];
如果你要用到cache的一些高級特性。需要參考msdn
下面我貼出cache的定義
//實現用於Web應用程序的緩存。無法繼承此類。
publicsealedclassCache:IEnumerable
{
//用於Cache.Insert(...)方法調用中的absoluteExpiration參數中以指示項從不過期。
;
//用作Cache.Insert(...)或Cache.Add(...)
//方法調用中的slidingExpiration參數,以禁用可調過期。
;
//獲取或設置指定鍵處的緩存項。
publicobjectthis[stringkey]{get;set;}
//將指定項添加到System.Web.Caching.Cache對象,該對象具有依賴項、過期和優先順序策略
//以及一個委託(可用於在從Cache移除插入項時通知應用程序)。
publicobjectAdd(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration,
CacheItemPrioritypriority,);
//從System.Web.Caching.Cache對象檢索指定項。
//key:要檢索的緩存項的標識符。
//返回結果:檢索到的緩存項,未找到該鍵時為null。
publicobjectGet(stringkey);
publicvoidInsert(stringkey,objectvalue);
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies);
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration);
//摘要:
//向System.Web.Caching.Cache對象中插入對象,後者具有依賴項、過期和優先順序策略
//以及一個委託(可用於在從Cache移除插入項時通知應用程序)。
//
//參數:
//key:
//用於引用該對象的緩存鍵。
//
//value:
//要插入緩存中的對象。
//
//dependencies:
//該項的文件依賴項或緩存鍵依賴項。當任何依賴項更改時,該對象即無效,
//並從緩存中移除。如果沒有依賴項,則此參數包含null。
//
//absoluteExpiration:
//所插入對象將過期並被從緩存中移除的時間。
//如果使用絕對過期,則slidingExpiration參數必須為Cache.NoSlidingExpiration。
//
//slidingExpiration:
//最後一次訪問所插入對象時與該對象過期時之間的時間間隔。如果該值等效於20分鍾,
//則對象在最後一次被訪問20分鍾之後將過期並被從緩存中移除。如果使用可調過期,則
//absoluteExpiration參數必須為System.Web.Caching.Cache.NoAbsoluteExpiration。
//
//priority:
//該對象相對於緩存中存儲的其他項的成本,由System.Web.Caching.CacheItemPriority枚舉表示。
//該值由緩存在退出對象時使用;具有較低成本的對象在具有較高成本的對象之前被從緩存移除。
//
//onRemoveCallback:
//在從緩存中移除對象時將調用的委託(如果提供)。
//當從緩存中刪除應用程序的對象時,可使用它來通知應用程序。
//
//異常:
//System.ArgumentException:
//為要添加到Cache中的項設置absoluteExpiration和slidingExpiration參數。
//
//System.ArgumentNullException:
//key或value參數為null。
//
//System.ArgumentOutOfRangeException:
//將slidingExpiration參數設置為小於TimeSpan.Zero或大於一年的等效值。
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration,
CacheItemPrioritypriority,);
//從應用程序的System.Web.Caching.Cache對象移除指定項。
publicobjectRemove(stringkey);
//將對象與依賴項策略、到期策略和優先順序策略
//以及可用來在從緩存中移除項【之前】通知應用程序的委託一起插入到Cache對象中。
//注意:此方法受以下版本支持:3.5SP1、3.0SP1、2.0SP1
publicvoidInsert(stringkey,objectvalue,CacheDependencydependencies,
DateTimeabsoluteExpiration,TimeSpanslidingExpiration,
);
}
⑧ asp.net aspx文件 緩存設定問題
1.概念
Cache-control用於控制HTTP緩存(在HTTP/1.0中可能部分沒實現,僅僅實現了Pragma: no-cache)
數據包中的格式:
Cache-Control: cache-directive
cache-directive可以為以下:
request時用到:
| "no-cache"
| "no-store"
| "max-age" "=" delta-seconds
| "max-stale" [ "=" delta-seconds ]
| "min-fresh" "=" delta-seconds
| "no-transform"
| "only-if-cached"
| "cache-extension"
response時用到:
| "public"
| "private" [ "=" <"> field-name <"> ]
| "no-cache" [ "=" <"> field-name <"> ]
| "no-store"
| "no-transform"
| "must-revalidate"
| "proxy-revalidate"
| "max-age" "=" delta-seconds
| "s-maxage" "=" delta-seconds
| "cache-extension"
部分說明:
根據是否可緩存分為
Public 指示響應可被任何緩存區緩存。
Private 指示對於單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許伺服器僅僅描述當用戶的
部分響應消息,此響應消息對於其他用戶的請求無效。
no-cache 指示請求或響應消息不能緩存(HTTP/1.0用Pragma的no-cache替換)
根據什麼能被緩存
no-store 用於防止重要的信息被無意的發布。在請求消息中發送將使得請求和響應消息都不使用緩存。
根據緩存超時
max-age 指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。
min-fresh 指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。
max-stale 指示客戶機可以接收超出超時期間的響應消息。如果指定max-stale消息的值,那麼客戶機可以
接收超出超時期指定值之內的響應消息。
Expires 表示存在時間,允許客戶端在這個時間之前不去檢查(發請求),等同max-age的
效果。但是如果同時存在,則被Cache-Control的max-age覆蓋。
格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)
2.應用
通過HTTP的META設置expires和cache-control
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />
上述設置僅為舉例,實際使用其一即可。這樣寫的話僅對該網頁有效,對網頁中的圖片或其他請求無效,並不會做任何cache。
這樣客戶端的請求就多了,盡管只是檢查Last-modified狀態的東西,但是請求一多對瀏覽速度必定有影響。
如果要對文件添加cache可以通過apache的mod_expire模塊,寫法為
<IfMole mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
</IfMole>
記得ExpiresActive設為On,我起先沒設置On,似乎怎樣YSlow都查不到緩存機制。這樣添加的話就是默認所有的。
如果要針對個別MIME類型則可以:
ExpiresByType image/gif "access plus 5 hours 3 minutes"
見 Apache Mole mod_expires
另外,當點擊瀏覽器上的刷新,客戶端發送的請求中均是max-age=0,表示validate操作,發送請求到伺服器
要求檢查cache,再更新cache,一般得到的是304 Not Modified,表示沒變動。
Response.CacheControl = "public";
Response.Expires = 60 * 12;
⑨ ASP.Net緩存問題
一樣的名字,當然只能得到最後的緩存。
這樣用緩存本身就不對,可以用用戶的sessionid來做緩存的key
⑩ asp.net把數據放到緩存
首先,把從文件里讀出來的數據放到緩存里,然後從緩存里讀取這些數據,用下面兩個函數。
實際可以這么做,每次需要違禁詞的時候,都嘗試從緩存里讀取,如果讀取的是NULL,從硬碟里讀取後放到緩存,然後使用;如果不是NULL,直接使用.
設置緩存
public static void SetCache(string CacheKey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(CacheKey, objObject);
}
讀取緩存
public static object GetCache(string CacheKey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}