快取與非同步訪問

2022-03-21 08:52:50 字數 1999 閱讀 1084

asp.net有兩種型別的快取機制,一種是輸出快取,一種是應用程式快取。

輸出快取(ouput caching):輸出快取是一種簡單的快取機制,它將輸出到客戶端的http頁面進行快取,當其他使用者繼  續請求頁時,伺服器端直接從記憶體中取出快取頁面,而不是重新歷經一遍asp.net頁面的生存週期。頁輸出快取對於那些不需要經常修改,但需要大量處理才能建立的頁面特別有效。輸出快取最終輸出的為html內容,能夠提供最大的效能增強。

資料快取(data caching):資料快取又稱應用程式快取,它需要手工編寫**來實現。比如可以將乙個動態的dataset物件新增到乙個快取物件中,後繼的使用者在使用該物件時,可以判斷快取中是否存在快取物件,如果存在則直接使用快取物件,否則的話建立乙個新的快取物件。

輸出快取又分為兩種:

1.整頁快取:這種方式將頁的所有內容都儲存在記憶體中,客戶端請求時返回整個頁面的快取。

2.部分頁快取:又稱分段快取,同理,只快取頁的部分內容。

最基本的快取示例

<%

@ outputcache duration="

10"varybyparam="

none

"%>

duration="10",表示當前要快取的時間,這裡設定為10秒,會看到10秒內頁面不會有變化,而10秒後才會變化。

varybyparam屬性指定快取查詢字串的頁面,也能的值包括"none","*"以及任何有效的查詢字串或post引數名。

這裡演示乙個簡單的示例,演示主從表的快取,主頁顯示商品標題,從頁顯示對應商品的詳細資訊,快取商品id,新建兩個頁面,乙個為masterproduct.aspx和detailspage.aspx,在detailspage頁面上新增如下宣告:

指定快取時間為一天,指定product_id為查詢字串,當product_id不同時,asp,net則會建立不同版本的detailspage.aspx頁面,當不同的使用者使用相同的查詢字串時,將從快取中讀取詳細資訊進行顯示。

使用快取配置:如果在多個頁面需要用到相同的快取配置,則可以在web.config檔案中統一新增快取配置。

這樣就新增了兩個asp.net快取,再要使用快取的頁面就可以直接引用了

<%@ outputcache cacheprofile="productcache" %>

2.快取資料

cache類位於system.web.caching命名空間中

cache物件具有如下特點

(1)cache物件是執行緒安全的,再編寫多執行緒應用時不需要顯式的加鎖或解鎖物件

(2)cache中的物件如果過期,則會被自動移除,因此在cache物件中獲取資料的時候,需要判斷是否存在該物件

(3)cache物件支援快取依賴,可以將cache物件與乙個檔案,乙個資料庫表或者其他任何型別的資源相關聯,如果發生改變,cache物件可以自動的被移除或更新

cache物件的使用應使用鍵值對的形式來儲存

cache["key"]=item;

例項如下:

public partial class _default : system.web.ui.page

this.gridview1.datasource = productds;

this.gridview1.databind();}}

//從資料庫中獲取產品資訊,並返回dataset物件

protected dataset getproductdataset()

return ds;}}

3.快取依賴

使用快取依賴,可以讓快取與外部檔案相關聯,擋外部資源發生更改時,快取能夠自動的被移除。

asp.net包括三種快取依賴類

cachedependency:允許基於檔案或其它快取鍵建立依賴

sqlcachedependency:基於sqlserver的表或者是乙個sqlserver查詢的依賴

aggregatecahcedepency:基於多個快取依賴項的依賴,比如可以同時組合sql依賴和檔案依賴

同步與非同步訪問網路

訪問網路的基本流程 同步請求與非同步請求的比較 1 構建url位址 nsurl url nsurl urlwithstring 2 構建請求nsurlrequest,nsurlrequest 不可變物件,不能動態的新增請求資訊 nsmutableurlrequest request nsmutabl...

C HttpWebRequest人非同步訪問

un test using system using system.collections.generic using system.linq using system.text using system.net using system.threading using system.io name...

HDFS非同步訪問模式

在現有hdfs的rpc呼叫方式上,採用的基本是blocking call的形式,也就是阻塞式的呼叫方式.阻塞方式的乙個明顯的缺點是它的請求過程是同步的,也就是說,客戶端必須等待當前請求結果的返回,才能接著傳送下一次請求.如果此客戶端打算在乙個執行緒中傳送大量請求的話,阻塞式的rpc呼叫將會非常耗時....