国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET Caching /1

2024-07-10 13:01:59
字體:
來源:轉載
供稿:網友
作者: rob howard, microsoft corporation
日期: 2001年10月15日    


caching
緩存,就是將一些生成代價比較大的常用數據,保存起來重用   
。一般數據都保存在內存中,因為從內存中讀取數據比從數據庫等其他地方要快。
asp.net通過兩種方式支持緩存:通過cache api存儲任意數據,通過頁面輸出緩存經常被訪問的頁面。

讓我們來看一個例子。

一個電子商務的站點, 它的目錄一般一周更新一次。站點提供了一套用戶界面讓客戶訂購產品。當一個客戶瀏覽目錄時,系統將通過網絡去查詢數據庫,進行各種計算,最后返回結果。
從服務器查詢這些目錄數據的操作是很頻繁的。我們知道,這些數據一周才變化一次。所以以下的幾種操作將帶來性能上的損失。

1. 執行asp.net的程序生成對數據庫的查詢語句。
2. 通過網絡,和數據庫服務器進行通訊。
3. 數據庫服務器編譯執行查詢(或是執行儲存過程)。

緩存機制可以減少許多這樣的工作,提高應用的性能和伸縮性。我們能緩存結果以便能靜態的處理客戶請求,來提高性能。同時,由于減少了處理每個請求使用的資源,因此也提高了系統的伸縮性。


cache api
對于asp開發人員來說,把常用的數據保存在內存里,并不是一個全新的概念。在asp里,有兩個對象完成它。
• session 對象
• application 對象

session用來保存單個用戶在多個請求間共享的數據,雖然在asp.net中有一些小的改動,但這些改動主要是在應用級的,對session對象來說,仍然是一個保存鍵與鍵值對的集合。application對象在asp.net也被保存下來了,同樣是鍵與鍵值對的集合。在asp和asp.net中,我們都可以使用以下代碼來操作application 對象

application("someinterestingdata") = "example data"
response.write(application("someinterestingdata")

我們可以使用同樣的方法訪問session對象。

asp.net帶來了一個新的鍵與鍵值的對象—cache.除了存儲鍵與鍵值對外,cache對象還提供了另外的一些存儲短期數據的新功能:

依賴—當一個鍵插入cache對象時,我們可以設置它的依賴性。當依賴的對象改變時,這個鍵將被刪除。現在支持的依賴對象有文件,其他的鍵和時間。
自動失效—沒有依賴的鍵值,當使用頻率不高時,將被自動刪除。
支持回調—當一個鍵將被刪除時,我們可以得到一個事件,在這個事件中來更新鍵值或取消刪除操作。
當我們在使用cache對象時,必須注意這一點:
使用cache對象中的鍵值之前,必須每一次都檢查鍵值是否存在。
由于在cache對象中的鍵值由于其依賴或者使用頻率較低,都會被刪除,所以,每一次使用cache中的對象,都必須檢查是否存在。
例如,我們可以用如下一段代碼來返回dataset.

private function loaddataset() as dataset
    dim sqlconnection as sqlconnection
    dim sqladapater as sqldatasetcommand
    dim datasetproducts as new dataset()
    dim sqldsn as string
    dim sqlselect as string

    ' connection string and select statement
    sqldsn = "server=localhost;uid=sa;pwd=;database=grocertogo"
    sqlselect = "select * from products"

    ' connect
    sqlconnection = new sqlconnection(sqldsn)
    sqladapater = new sqldatasetcommand(sqlselect, sqlconnection)

    ' fill dataset create product table
    sqladapter1.filldataset(datasetproducts, "products")

    return products
end function

我們很容易用cache對象來改寫這段代碼,使只在dataset不存在在cache中才調用loaddataset()。

public function getproductdata() as dataset
    if (isnothing(cache("productdata")) then
        cache("productdata") = loaddataset()

    return cache("productdata")
end function

cache對象在許多地方和application對象有許多相似之處,而最大的不同是cache支持了依賴。
 



相關技術專區

warning: ocistmtexecute: ora-02291: integrity constraint (zddev.sys_c001009) violated - parent key not found in /mnt/d30/webdev/lib/libstd2.htm on line 15

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 封丘县| 黄大仙区| 新民市| 彰化县| 介休市| 永城市| 新余市| 苍山县| 田林县| 志丹县| 潼南县| 新源县| 九台市| 荆门市| 南陵县| 龙江县| 忻州市| 淮滨县| 朝阳区| 石泉县| 章丘市| 贵南县| 鄢陵县| 门源| 精河县| 奉化市| 明光市| 蒲江县| 白玉县| 柞水县| 芷江| 井研县| 深泽县| 定兴县| 肃南| 台山市| 霍城县| 香河县| 方城县| 海阳市| 平远县|