aspnet設置緩存
❶ asp.net MVC的緩存問題
[OutputCache(Duration = 10, VaryByParam = "None", VaryByCustom = "browser")]
這個是緩存在瀏覽器中,不同瀏覽器有些不支持緩存
ServerAndClient是緩存在伺服器和客戶端都有
❷ 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];
}
❸ asp.net怎麼設置清除頁面緩存而且防止同時登錄
//清除頁面緩存,防止頁面回退重復提交數據 在頁面里做以下設置就可以使頁面的緩存失效,每次都需要獲取新頁面。 Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); /* 要防止同一用戶同時登陸,首頁應該記錄在線用戶的信息(這里與用戶名為例),然後判斷正在登陸的用戶裡面是否已存在。 在這里使用一個cache存放已經登陸的用戶名,但是還有一個問題就是要知道用戶是什麼時候離開系統的呢?這就要定期清除cache中的內容了,也就是設置一個cache的時間。 這樣就達到了防止同時登陸的效果,具體代碼如下,放在登陸成功的地方: */ string key = TextBox1.Text; //用戶名文本框設為cache關鍵字 string uer = Convert.ToString(Cache[key]); //讀取cache中用戶相應的值 //判斷cache中是否有用戶的信息,如果沒有相關的值,說明用戶未登陸 if (uer == null || uer == String.Empty) { //定義cache過期時間 TimeSpan SessTimeout = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0); //第一次登陸的時候插入一個用戶相關的cache值, HttpContext.Current.Cache.Insert(key, key, null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null); Session[「ADMINID」] = TextBox1.Text; Response.Redirect(「main.aspx」); } else { //重復登陸 Response.Write(「alert(『您的賬號已經登陸!
❹ ASP.NET幾種清除頁面緩存的方法
在asp.net中使用模式dialog時,你會發現每次打開的頁面都是相同的內容,頁面內容並沒有刷新,這是緩存的原因造成的,
解決方法如下:
第一種是ASP.NET清除頁面緩存
Response.Buffer
=
true;
Response.ExpiresAbsolute
=
System.DateTime.Now.AddSeconds(-1);
Response.Expires
=
0;
Response.CacheControl
=
"no-cache";
Response.AddHeader("Pragma",
"No-Cache");
第二種是HTML方法
最後一種是在在頁面中禁用緩存
在web開發中合理使用緩存可以有效的提高網站的性能,但是在某些場合下因為緩存的存在會帶來很多的問題。
例如:因為緩存的存在會造成重復提交數據的問題,驗證碼圖片不能正確顯示的問題
,等等。這個時候我們就要禁用頁面緩存的功能。
我們常用的做法是發送一個no-cache的指令,但是實際使用過程中我們發現,這個指令對IE是有效的,但是對Firefox卻沒有效,這是因為,使用該指令Firefox不緩存HTTPS
pages
但是還是會緩存HTTP
pages
,這是Firefox的一個BUG,解決的辦法很簡單,就是使用no-store代替no-cache,同時發送no-store和no-cache指令
ASP.net中的處理方法,在不需要緩存的頁面中添加如下代碼
❺ 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緩存常見的4種方式有哪些
1、分布式緩存Memcached
2、內存緩存,此佔用伺服器資源
3、XML緩存,這種最為常見
4、DATATABLE緩存
❼ asp.net怎麼設置瀏覽器客戶端緩存
1. Expires:+過期時間
表示在指定時間後瀏覽器緩存失效,需要注意的是這兒的過期時間必須是HTTP格式的日期時間,其他的都會被解析成當前時間「之前」,緩存會馬上過期,HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:
❽ asp.net c# 設置一個緩沖區, 數據儲存在硬碟
如果客戶端的存儲的話支持樓上的用cookies,但是cookie可能不支持和被禁用。如果存在伺服器上的話可以用緩存,建議使用序列化傳輸數據,更快。
你要想是存儲在客戶端的硬碟上那是不用想了。試想一下,如果瀏覽器就可以直接訪問你機器的硬碟了,那你電腦上的數據還有什麼安全可言?都可以通過瀏覽器操作你的數據了。
存在伺服器上的話你就直接用StreamReader和StreamWriter操作文件就行了。但是估計你也得考慮讀取和存儲的速度問題吧,好像還沒有資料庫來得快。
❾ .net帶有參數的頁面怎麼進行緩存,緩存後可瀏覽正確頁面
可以先打開「工具」-」internet選項「,找高級選項里重置ie設置;
不行就重新安裝ie瀏覽器,重裝ie瀏覽器也無法正常瀏覽網頁的時候,建議換其它瀏覽器上網(如谷歌、火狐等品牌瀏覽器)
❿ asp.net如何將經常訪問的資料庫表放入緩存中
如果單是為減小資料庫壓力建議採用頁片斷緩存,即緩存頁面中部分內容(與數據相關的)。
可以採用Cache類、Session對象和Application對象(後兩者很常見,就不多說了)。
而Cache類是提供數據緩存的類,三者類似。
例如要經常讀取資料庫中一個的內容(銷售記錄等等)可將其存放一個dataset
首先從資料庫讀取並填充到一個名為DS的Dateset里(....這個不是樓主的問題就不討論了)
直接Cache("ds")=DS,則實現了將DataSet「存」到Cache("ds")里。
調用則是
首先定義一個新的Dateset 如 DS1
DS1=Cache("ds")即可