1. c#如何使用緩存提高程序效率
緩存的技術應用應該是非廣泛的。而它的作用也是為了提高系統或者網站的執行效率。下面是四種常見的緩存技術:
一.OutputCaching
由於IIS的一些特性,默認情況下OutputCache是打開的,但是要對某些請求進行緩存,還需要開發者進行定製,而且默認情況下,Output Cache 會被緩存到硬碟上,我們可以通過修改DiskCacheable的屬性來設置其是否緩存,還可以通過Web config里配置緩存文件的大小。
<%@ OutputCacheDuration="3600" VaryByParam="state" DiskCacheable="true" %>
一般用硬碟緩存是考慮到頁面送顯的數據比較大,相對內存緩存來說,它的容量大,但是訪問速度慢點,如果把周期設太短,使用硬碟緩存的效率就不大好。對於Output Cache的定製,有兩種方法,一種是基於底層的API技術,一種是基於高層的@OutputCaching:
1.基於高層的@OutputCaching
A.由參數改變緩存內容:有些時候我們需要根據用戶的請求來生成頁面,但是用戶的請求只有有限的幾種組合,這個時候就可以根據用戶請求來生成幾種緩存頁面,來進行緩存。
<%@ OutputCache Duration ="60" VaryByParam = "state" %>
<asp:sqlDataSourceID="SqlDataSource1" runat="server">
<SelectParameters>
<asp:QueryStringParameter Name="state"QueryStringField="state" DefaultValue="CA" />
</SelectParameters>
</asp:SqlDataSource>
B.回調緩存:可以針對每個請求在頁面中插入動態的部分,以彌補單獨使用靜態緩存的不足:
動態的部分用Substitution控制項,Substitution控制項是一個容器
<asp:SubstitutionID="Substitution1" runat="server" MethodName =""/>
MethodName 裡面放入要調用的方法內容。
2. 使用API定製緩存:
通過設置System.Web.HttpCachePolicy屬性來進行配置
<%@ OutputCache Duration="60"VaryByParam="none" %>
就可以寫成
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
二.FragmentCaching
作為Output的緩存的附加功能,還提供一種緩存技術,專門用於緩存用戶控制項。在用戶控制項中設置:
<%@ OutputCache Duration="60"VaryByParam="none" %>
但在引用用戶控制項的頁面不設置緩存。這樣的話,頁面中除了用戶控制項是靜態的,其他都是動態的。
緩存用戶空間同樣還可以使用控制項作為參數來源。通過指定控制項作為緩存控制項的數據來源,可以達到緩存控制項數據的目的,和上面一樣。
三.DataCaching
Asp.net提供了一種非常快捷的方法進行資料庫緩存,用戶可以非常簡單方便的對頁面變數進行緩存。並以此提高程序效率。一個頁面變數的緩存生命周期與應用程序的緩存生命周期相同
實現是把數據放在Cache中,如:
source = new DataView(ds);
Cache("MyCache") = source;
MyCache這個變數其實就是一個XML文件。
四.SQL Caching
通過配置資料庫連接池,只有當資料庫數據被改變的時候,緩存才會改變。
開個DOS窗口:
C:\>dir aspnet_regsql.exe/s ——這個文件是專門注冊SQL連接池的,它對SQLSever 7.0以上都有專門的支持,我們通過寫一些專門的語句來配置這個注冊連接池,可以把連接池和本地的應用程序(Asp.net伺服器,即IIS)做一個連接。連接池只能監視有限的幾個庫,不然連接池的負載太大。使用SQL Caching:
先注冊,如: aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-ed
aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-et-t"authors"
其中:- S".\SQLExpress" 表示要使用的SQL Server實例為".\SQLExpress"。-E 表示使用當前windows憑證進行身份驗證。-d"pubs"表示用於應用程序服務的資料庫名稱叫"pubs"。-ed表示為SQL 緩存依賴項啟用資料庫。-et 表示為SQL 緩存依賴項啟用表。-t"authors"表的名稱為"authors"。
然後頁面上:
<%@ OutputCacheDuration="99999999" VaryByParam="none"SqlDependency="Pubs.Authors" %>
就OK了。
2. 如何使用緩存
緩存是分層次的,下面是計算機緩存山:
cpu緩存策略:
寄存器中計算數據,而數據存儲在內存中,由於cpu和內存之間的性能逐漸增大,系統設計者在cpu和內存之間插入了3層的高速緩存。高速緩存有三個層級,就是整個計算機緩存系統的一個小縮影。
3. 程序在內存中運行還是在緩存中運行
一般來說,相同價格的存儲器,容量與速度成反比的。即裝的越多速度相對越慢。
緩存是指在低速設備和高速設備之間的中介。
比如與cpu 速度相比,內存速度很慢,就增加一個速度比較快的L1 cache、L2 cache緩存,查詢的時候先在緩存查,查不到再去慢的內存查,把查到結果放到緩存,下次在用的時候就快了。
與內存相比,硬碟或者網路傳輸相比慢很多,所以為了速度可以把一部分數據放在內存中,查詢的時候先在內存查,內存查不到在去硬碟或網路,把查到結果放到內存中,這就是緩存。
所以程序都是運行在內存中的,至於緩存只是一個中介作用,可能是內存做緩存,也可能是別的設備。
4. 用較多的內存來運行程序還是系統緩存
配置不算高,但是簡單的看看視頻,聽聽歌上上網還是沒有問題的,至於你的問題標題沒有太看明白,系統會使用硬碟來做緩存(也即是 頁面文件 C盤根目錄下的隱藏文件 pagefile.sys)
如果是其他第三方工具的選項,選擇第一個就好了,內存本來就是給程序用的,用來緩存浪費了。
5. 性能選項里的內存使用是「程序」好還是「系統緩存」好
首先你要區分內存和緩存的區別
內存
計算機的物里儲存器
緩存
也就是虛擬內存
是指在物理內存不夠的情況下
從硬碟里劃出一部分空間來當做內存使用
但是硬碟的讀寫速度有限
達不到物里內存那樣的讀寫速度
所以說
樓主
如果在物理內存足夠大的情況下
虛擬內存可以設的小一點
現在的計算機配置一個g的內存
完全能滿足各種游戲和辦公需要
所以說
樓主
你可以不用系統緩存
或者不用把緩存設置的那麼大
6. 內存使用,調整以優化性能,選擇程序和系統緩存哪個好
你哈兒應該會優化系統的吧,那建議你開緩存算了。選擇系統緩存,可以提高系統性能,但是由於會把系統文件預讀入內存,因此系統在內存的佔用較高,相應的應用程序的空間較少,不建議小內存的電腦開這項,但是你哈B電腦應該夠用,可以開系統緩存,因為系統佔用空間高時,對虛擬內存的處理也較快,應用程序也有主夠的內存運行。 補充: 不過選擇程序的話會快一點。雖說XP自帶附加功能不是很全,但是有些小工具還是有很大作用的哦,畢竟是微軟啊。
7. 請問在XP系統下我要開很多程序內存使用里選擇程序還是系統緩存好呢
看你的內存條了,大於512的話就選程序吧。因為後者是虛擬內存。只有你做伺服器時才選那個
8. 高速緩存有什麼作用為什麼cpu需要高速緩存
什麼是高速緩存技術:
高速緩存英文是cache。一種特殊的存儲器子系統,其中復制了頻繁使用的數據,以利於cpu快速訪問。存儲器的高速緩沖存儲器存儲了頻繁訪問的
ram
位置的內容及這些數據項的存儲地址。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。如果存有該地址,則將數據返回處理器;如果沒有保存該地址,則進行常規的存儲器訪問。因為高速緩沖存儲器總是比主ram
存儲器速度快,所以當
ram
的訪問速度低於微處理器的速度時,常使用高速緩沖存儲器。
高速緩存的作用:
在cpu開始執行任何指令之前,都會首先從內存中取得該條指令以及其它一些相關數據和信息。為了加快cpu的運行速度,幾乎所有的晶元都採用兩種不同類型的內部存儲器,即高速緩存。緩存被用來臨時存放一些經常被使用的程序片段或數據。
一級高速緩存是性能最好緩存類型,與解釋指令和執行算術運算的處理單元一到構成cpu的核心。cpu可以在全速運行的狀態下讀取存放在一級高速緩存中的指令或數據。intel的處理器產品一般都會具有32k的一級緩存,而象amd或via這種競爭對手的產品則會使用更多的一級緩存。
如果在一級緩存中沒有找到所需要的指令或數據,處理器會查看容量更大的二級緩存。二級緩存既可以被集成到cpu晶元內部,也可以作為外部緩存。pentium
ii處理器具有512k的二級緩存,工作速度相當於cpu速度的一半。celeron以及更新的pentium
iii晶元則分別具有128k和256k的在片二級緩存,能夠在處理器全速下運行。
對於存放在速度較慢的二級緩存中的指令或數據,處理器往往需要等待2到4個時鍾周期。為了充分利用計算資源,cpu可以在這段時間內查看和執行其它正在等候處理,但不需要使用額外數據的指令,從而提高整個系統的速度,把空閑時間降低到最低程度。
9. 什麼叫緩存
所謂的緩存,就是將程序或系統經常要調用的對象存在內存中,一遍其使用時可以快速調用,不必再去創建新的重復的實例。這樣做可以減少系統開銷,提高系統效率。
1、通過文件緩存;顧名思義文件緩存是指把數據存儲在磁碟上,不管你是以XML格式,序列化文件DAT格式還是其它文件格式;
2、內存緩存;也就是創建一個靜態內存區域,將數據存儲進去,例如我們B/S架構的將數據存儲在Application中或者存儲在一個靜態Map中。
3、本地內存緩存;就是把數據緩存在本機的內存中。
4、分布式緩存機制;可能存在跨進程,跨域訪問緩存數據
對於分布式的緩存,此時因為緩存的數據是放在緩存伺服器中的,或者說,此時應用程序需要跨進程的去訪問分布式緩存伺服器。
(9)程序是否需要用緩存擴展閱讀
當我們在應用中使用跨進程的緩存機制,例如分布式緩存memcached或者微軟的AppFabric,此時數據被緩存在應用程序之外的進程中。
每次,當我們要把一些數據緩存起來的時候,緩存的API就會把數據首先序列化為位元組的形式,然後把這些位元組發送給緩存伺服器去保存。
同理,當我們在應用中要再次使用緩存的數據的時候,緩存伺服器就會將緩存的位元組發送給應用程序,而緩存的客戶端類庫接受到這些位元組之後就要進行反序列化的操作了,將之轉換為我們需要的數據對象。
10. 小程序中,哪些數據該使用緩存,哪些該使用全局變數
緩存就是類似資料庫,全局變數就是所有頁面都能用,這是兩個東西.
比如說新聞應用,首頁的數據需要放到緩存里,然後下次訪問首頁的時候直接載入緩存的數據,然後在非同步調用介面刷新數據,這樣在進入首頁的時候就不需要loading了,直接能看到數據,感覺就是秒開,用戶體驗更好一些,
全局變數就是類似用戶登錄信息,登錄之後設置成全局的,每個頁面都可以使用,不然跳轉後就需要每次都重新獲取用戶信息