關於WinForm Web如何使用快取Cach

2022-01-12 12:02:07 字數 3910 閱讀 4771

cache 的絕對到期與滑動到期

絕對到期:設定絕對過期時間 到了指定時間以後會失效。(類似cookie機制)

相對到期也稱滑動到期:設定相對過期時間 指定時間內無訪問會失效。(類似session機制)

httpruntime.cache與httpcontext.current.cache 為同乙個物件

httpruntime.cache.add 存在相同的鍵會異常,返回快取成功的物件 httpruntime.cache.insert存在相同的鍵會替換無返回值

httpruntime.cache["key"] 使用字典的方式也可以讀取和設定

httpruntime.cache.insert(key, value, null, datetime.now.addseconds(seconds), timespan.zero); //設定絕對過期時間 到了指定時間以後會失效 ps: timespan.zero == system.web.caching.cache.noslidingexpiration

value, null, datetime.maxvalue, timespan.fromseconds(seconds)); //設定相對過期時間 指定時間內無訪問會失效 ps: datetime.maxvalue == system.web.caching.cache.noabsoluteexpiration

本文參考:

system.web.httpruntime.cache的方法:

addinsert

getremove

快取的操作包括:讀、寫。

讀取快取內容呼叫system.web.httpruntime.cache.get(key)方法,插入快取資料呼叫add或insert方法。

add與insert的不同

httpruntime.cache.add 存在相同的鍵會異常,返回快取成功的物件。

httpruntime.cache.insert存在相同的鍵會替換原值,無返回值。

如果您希望某個快取專案一旦放入快取後,就不要再被修改,那麼呼叫add確實可以防止後來的修改操作。而呼叫insert方法,則永遠會覆蓋已存在項。

快取的過期時間

快取過期時間包括:絕對過期和滑動過期。

絕對過期:到了指定時間以後便會失效。

滑動過期:在指定時間內無訪問請求便失效。

例項:絕對過期:

滑動過期:

快取項移除優先順序

// 指定 cache 物件中儲存的項的相對優先順序。

public enum cacheitempriority

參考文章  

msdn:   

對於每個應用程式域均建立該類的乙個例項,並且只要對應的應用程式域保持活動,該例項便保持有效。

注意:cache類不能在 asp.net 應用程式外使用。它是為在 asp.net 中用於為 web 應用程式提供快取而設計和測試的。在其他型別的應用程式(如控制台應用程式或 windows 窗體應用程式)中,asp.net 快取可能無法正常工作。

system.web.caching是用來管理快取的命名空間,其父級空間是system.web,由此可見,快取通常用於web**的開發,包括在b/s專案中的開發。

快取的設計主要是考慮到網路頻寬可能會延緩資料的提交與回發,如果把資料儲存在客戶端,使用者就可以直接從客戶端讀取資料,減少客戶端與伺服器端的資料互動,提高程式的效能。

那麼system.web.caching可以使用到winform程式中嗎?

如果用的是winform,基本上不用想這個問題,因為你的程式本身就在記憶體裡執行著。winfrom 直接用記憶體用 資料字典如果是

web,快取就是將常用的資料放到伺服器的記憶體中,當有不同的客戶請求相同的資料時,直接從記憶體讀取,以此提高效能。

簡單點:webform是「瘦客戶端」,占用伺服器資源。winform是「胖客戶單」,占用的是本地客戶端記憶體。

一、是web專案中如何使用。

本文**:

/// /// 獲取資料快取

///

/// 鍵

public static object getcache(string cachekey)

/// /// 設定資料快取

///

public static void setcache(string cachekey, object objobject)

/// /// 設定資料快取

///

public static void setcache(string cachekey, object objobject, timespan timeout)

/// /// 設定資料快取

///

public static void setcache(string cachekey, object objobject, datetime absoluteexpiration, timespan slidingexpiration)

/// /// 移除指定資料快取

///

public static void removeallcache(string cachekey)

/// /// 移除全部快取

///

public static void removeallcache()

}

二、是winform程式中

(1)靜態變數快取:

view code

namespace hz

public

void add(string key, string value)

public

void remove(string key)

public

string

this[string index]

set 

}public

static cache instance}}

return instance;}}

}}(2)記憶體快取memorycach:表示實現記憶體中的快取的型別。(注意此類僅僅net4.0以上支援

本文**:

using system;

using system.collections.generic;

using system.linq;

using system.runtime.caching;

using system.text;

namespace cnblogs.zzk.domain.entities

public dictionarycachemanager(string name)

--", typeof (tk).name, typeof (tv).name, name));

}public tv get(tk key,funcgetvalue)

else

}public tv get(tk key, funcgetvalue,datetimeoffset datetimeoffset)

else

}public void clear()

public void clear(tk key)}}

關於PagedDataSourced的使用

asp.net提供了三個功能強大的列表控制項 datagrid datalist和repeater控制項,但其中只有datagrid控制項提供分頁功能。相對datagrid,datalist和repeater控制項具有更高的樣式自定義性,所以很多時候我們喜歡使用datalist或repeater控制...

關於selenium base page的使用

在使用unittest框架的過程中,我們經常需要重複地寫setup和teardown函式,為了減少重複性的工作,可以將這部分 封裝起來。如下 import unittest from common.base page import basepage from common.browser impor...

關於BackgroundWorker的使用

dowork 呼叫 runworkerasync 時發生。progresschanged 呼叫 reportprogress 時發生。runworkercompleted 當後台操作已完成 被取消或引發異常時發生。先介紹一下backgroundworker的幾個屬性 方法 workerreports...