久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔
站長百科 | 數(shù)字化技能提升教程 數(shù)字化時代生存寶典
首頁
數(shù)字化百科
電子書
建站程序
開發(fā)
服務器
辦公軟件
開發(fā)教程
服務器教程
軟件使用教程
運營教程
熱門電子書
WordPress教程
寶塔面板教程
CSS教程
Shopify教程
導航
程序頻道
推廣頻道
網(wǎng)賺頻道
人物頻道
網(wǎng)站程序
網(wǎng)頁制作
云計算
服務器
CMS
論壇
網(wǎng)店
虛擬主機
cPanel
網(wǎng)址導航
WIKI使用導航
WIKI首頁
最新資訊
網(wǎng)站程序
站長人物
頁面分類
使用幫助
編輯測試
創(chuàng)建條目
網(wǎng)站地圖
站長百科導航
站長百科
主機偵探
IDCtalk云說
跨境電商導航
WordPress啦
站長專題
網(wǎng)站推廣
網(wǎng)站程序
網(wǎng)站賺錢
虛擬主機
cPanel
網(wǎng)址導航專題
云計算
微博營銷
虛擬主機管理系統(tǒng)
開放平臺
WIKI程序與應用
美國十大主機
編輯“
緩存
”
人物百科
|
營銷百科
|
網(wǎng)賺百科
|
站長工具
|
網(wǎng)站程序
|
域名主機
|
互聯(lián)網(wǎng)公司
|
分類索引
跳轉至:
導航
、?
搜索
警告:
您沒有登錄。如果您做出任意編輯,您的IP地址將會公開可見。如果您
登錄
或
創(chuàng)建
一個賬戶,您的編輯將歸屬于您的用戶名,且將享受其他好處。
反垃圾檢查。
不要
加入這個!
緩存(Cache memory)是硬盤控制器上的一塊內(nèi)存芯片,具有極快的存取速度,它是硬盤內(nèi)部存儲和外界接口之間的緩沖器。由于硬盤的內(nèi)部數(shù)據(jù)傳輸速度和外界介面?zhèn)鬏斔俣炔煌?,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關系到硬盤的傳輸速度的重要因素,能夠大幅度地提高硬盤整體性能。當硬盤存取零碎數(shù)據(jù)時需要不斷地在硬盤與內(nèi)存之間交換數(shù)據(jù),有大緩存,則可以將那些零碎數(shù)據(jù)暫存在緩存中,減小外系統(tǒng)的負荷,也提高了數(shù)據(jù)的傳輸速度。 == 基本簡介 == 緩存是指可以進行高速數(shù)據(jù)交換的存儲器,它先于內(nèi)存與[[CPU]]交換數(shù)據(jù),因此速度很快。L1 Cache(一級緩存)是CPU第一層高速緩存。內(nèi)置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態(tài)RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般L1緩存的容量通常在32—256KB。L2 Cache(二級緩存)是CPU的第二層高速緩存,分內(nèi)部和外部兩種芯片。內(nèi)部的芯片二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,普通臺式機CPU的L2緩存一般為128KB到2MB或者更高,筆記本、服務器和工作站上用CPU的L2高速緩存最高可達1MB-3MB。 緩存只是內(nèi)存中少部分數(shù)據(jù)的復制品,所以CPU到緩存中尋找數(shù)據(jù)時,也會出現(xiàn)找不到的情況(因為這些數(shù)據(jù)沒有從內(nèi)存復制到緩存中去),這時CPU還是會到內(nèi)存中去找數(shù)據(jù),這樣系統(tǒng)的速度就慢下來了,不過CPU會把這些數(shù)據(jù)復制到緩存中去,以便下一次不要再到內(nèi)存中去取。隨著時間的變化,被訪問得最頻繁的數(shù)據(jù)不是一成不變的,也就是說,剛才還不頻繁的數(shù)據(jù),此時已經(jīng)需要被頻繁的訪問,剛才還是最頻繁的數(shù)據(jù),又不頻繁了,所以說緩存中的數(shù)據(jù)要經(jīng)常按照一定的算法來更換,這樣才能保證緩存中的數(shù)據(jù)是被訪問最頻繁的。 == 工作原理 == 緩存的工作原理是當CPU要讀取一個數(shù)據(jù)時,首先從緩存中查找,找到就立即讀取并送給CPU處理;沒有找到,就用相對慢的速度從內(nèi)存中讀取并送給CPU處理,同時把這個數(shù)據(jù)所在的數(shù)據(jù)塊調入緩存中,可以使得以后對整塊數(shù)據(jù)的讀取都從緩存中進行,不必再調用內(nèi)存。正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數(shù)CPU可達90%左右),也就是說CPU下一次要讀取的數(shù)據(jù)90%都在緩存中,只有大約10%需要從內(nèi)存讀取。這大大節(jié)省了CPU直接讀取內(nèi)存的時間,也使CPU讀取數(shù)據(jù)時基本無需等待。總的來說,CPU讀取數(shù)據(jù)的順序是先緩存后內(nèi)存。 RAM和ROM相對的,RAM是掉電以后,其中的信息就消失那一種,ROM在掉電以后信息也不會消失那一種。RAM又分兩種,一種是靜態(tài)RAM,SRAM;一種是動態(tài)RAM,DRAM。前者的存儲速度要比后者快得多,使用的內(nèi)存一般都是動態(tài)RAM。為了增加系統(tǒng)的速度,把緩存擴大不就行了嗎,擴大的越大,緩存的數(shù)據(jù)越多,系統(tǒng)不就越快了嗎?緩存通常都是靜態(tài)RAM,速度是非常的快, 但是靜態(tài)RAM集成度低(存儲相同的數(shù)據(jù),靜態(tài)RAM的體積是動態(tài)RAM的6倍), 價格高(同容量的靜態(tài)RAM是動態(tài)RAM的四倍), 由此可見,擴大靜態(tài)RAM作為緩存是一個非常愚蠢的行為, 但是為了提高系統(tǒng)的性能和速度,必須要擴大緩存, 這樣就有了一個折中的方法,不擴大原來的靜態(tài)RAM緩存,而是增加一些高速動態(tài)RAM做為緩存, 這些高速動態(tài)RAM速度要比常規(guī)動態(tài)RAM快,但比原來的靜態(tài)RAM緩存慢, 把原來的靜態(tài)ram緩存叫一級緩存,而把后來增加的動態(tài)RAM叫二級緩存。 == Web 應用系統(tǒng)存在哪些速度差異? == :讀取文件系統(tǒng) ? 讀取磁盤 :讀取數(shù)據(jù)庫內(nèi)存 ? 讀取文件系統(tǒng) :讀取應用內(nèi)存 ? 訪問數(shù)據(jù)庫服務器 :讀取靜態(tài)文件 ? 訪問應用服務器 :讀取瀏覽器緩存 ? 訪問網(wǎng)站 == 緩存技術分類 == :操作系統(tǒng)磁盤緩存 ? 減少磁盤機械操作 :數(shù)據(jù)庫緩存 ? 減少文件系統(tǒng) I/O :應用程序緩存 ? 減少對數(shù)據(jù)庫的查詢 :客戶端瀏覽器緩存 ? 減少對網(wǎng)站的訪問 == PHP緩存技術 == <p style="text-indent:2em;">WEB程序獲取信息的方式主要是查詢數(shù)據(jù)庫,當數(shù)據(jù)庫不是很大的情況下不會有太大的問題.然而,隨著網(wǎng)站的發(fā)展,數(shù)據(jù)庫呈幾何級數(shù)的方式增長的時候,就會出現(xiàn)瓶頸.于是[[PHP緩存技術]]誕生了。.PHP緩存技術工作時,當程序查詢數(shù)據(jù)的時候,會把相應的結果序列化后保存到文件中,以后同樣的查詢語句就可以不用直接查詢數(shù)據(jù)庫,而是從緩存文件中獲得。這一改進使得程序運行速度得以大幅度提升. </p> :目前應用PHP緩存技術比較流行的方法主要是Adodb+Smarty這樣的黃金搭檔. :PHP緩存技術工作原理 :首先看看adodb提供的數(shù)據(jù)緩存功能: #<?php #include('adodb.inc.php');load code common to ADOdb #$ADODB_CACHE_DIR = '/usr/ADODB_cache'; #$conn = &ADONewConnection('mysql');create a connection #$conn->PConnect(' ','userid','','agora');connect to MySQL, agora db #$sql = 'select CustomerName, CustomerID from customers'; #$rs = $conn->CacheExecute(15,$sql); #?> 如上,每次查詢數(shù)據(jù)的時候,會把相應的結果序列化后保存到文件中,以后同樣的查詢語句就可以不用直接查詢數(shù)據(jù)庫,而是從緩存文件中獲得。 :再來看看Smarty提供的頁面緩存功能: #<?php 1<?php #require('Smarty.class.php'); #$smarty = new Smarty; #$smarty->caching = true; #if(!$smarty->is_cached('index.tpl')) { #// No cache available, do variable assignments here. #$contents = get_database_contents(); #$smarty->assign($contents); #} #$smarty->display('index.tpl'); #?> <p style="text-indent:2em;">如上,每次訪問頁面的時候,都會先檢測相應的緩存是否存在,如果不存在,就連接數(shù)據(jù)庫,得到數(shù)據(jù),完成模板變量的[[賦值]],顯示頁面,同時生成[[緩存文件]],這樣下次訪問的時候緩存文件就發(fā)揮作用了,而不會再執(zhí)行if塊的數(shù)據(jù)查詢語句了。當然,在實際使用中會有很多東西要考慮,比如,有效期的設置,緩存組的設置等等,具體可以查看Smarty手冊中有關緩存(caching)的相關章節(jié)。</p> <p style="text-indent:2em;">以上兩個PHP流行組件緩存方式的側重點是不同的,對于Adodb的緩存而言,它緩存的是數(shù)據(jù),對于Smarty的緩存而言,它緩存的是頁面。其他提供緩存功能的組件還有很多(如:PEAR::Cache_Lite等等),實際編程中使用哪個方案要具體情況具體分析,也可能會綜合使用。</p> <p style="text-indent:2em;">使用這些組件內(nèi)置的緩存方案有一個很明顯的好處是它們的實現(xiàn)對[[客戶端]]而言都很透明。只要進行必要的設置(如:緩存時間,緩存目錄等等)就可以了,而不用過多考慮實現(xiàn)緩存的細節(jié)問題,系統(tǒng)會根據(jù)設置自動管理緩存。但是其缺點也同樣明顯,因為每次請求仍然要用PHP解析一遍,效率和純靜態(tài)相比還是大打折扣,在大的PV面前還是不能滿足要求,在這種情況下,僅僅做動態(tài)緩存就不夠了,必須實現(xiàn)[[靜態(tài)緩存]]。</p> <p style="text-indent:2em;">PHP,一門最近幾年興起的web設計腳本語言,由于它的強大和可伸縮性,近幾年來得到長足的發(fā)展,php相比傳統(tǒng)的asp網(wǎng)站,在速度上有絕對的優(yōu)勢,想mssql轉6萬條數(shù)據(jù)php如需要40秒,asp不下2分鐘.但是,由于網(wǎng)站的數(shù)據(jù)越來越多,我們渴求能更快速的[[調用數(shù)據(jù)]],不必要每次都從數(shù)據(jù)庫調,我們可以從其他的地方,比方一個文件,或者某個內(nèi)存地址,這就是php的緩存技術,也就是Cache技術.</p> ===內(nèi)容加載=== 在使用緩存數(shù)據(jù)前,必須將數(shù)據(jù)[[加載]]到緩存中,有兩種機制來加載數(shù)據(jù): #提前加載Proactive Load——使用這種方式時,你提前將所有的狀態(tài)數(shù)據(jù)加載到緩存中,可能在應用程序或線程啟動時進行,然后在應用程序或線程的生存期內(nèi)一直緩存; #動態(tài)加載Reactive Load——或稱反應式加載,當使用這種方法時,在應用程序請求數(shù)據(jù)時取到數(shù)據(jù),并且將它緩存起來以備后續(xù)使用。 ===過期策略=== <p style="text-indent:2em;">另外一個關鍵因素是如何保持緩存數(shù)據(jù)和主數(shù)據(jù)(文件或[[數(shù)據(jù)庫]]或其他的應用程序資源)的一致性,你可以定義過期策略來決定緩存中的內(nèi)容,如已經(jīng)緩存的時間或者收到其他資源的通知。</p> ==Asp.net緩存== <p style="text-indent:2em;">將常用的數(shù)據(jù)保存在內(nèi)存中對asp的開發(fā)人員來說并不陌生,Session對象和Application對象提供鍵值對來緩存數(shù)據(jù),Session對象保存和單個用戶有關的數(shù)據(jù),Application對象可保留和應用程序有關的數(shù)據(jù),每個用戶都可以訪問。</p> <p style="text-indent:2em;">在Asp.net中,提供了專門用于緩存數(shù)據(jù)的Cache對象,它的應用范圍是應用程序域。生存期是和應用程序緊密相關的,每當應用程序啟動的時候就重新創(chuàng)建Cache對象。它域Application對象的主要區(qū)別就是提供了專門用于緩存管理的特性,比如依賴和過期策略。</p> <p style="text-indent:2em;">你可以使用Cache對象和它的屬性來實現(xiàn)高級的緩存功能,同時可以利用Asp.net Cache來對客戶端輸出的響應內(nèi)容進行緩存。關于Asp.net中的緩存技術,有以下內(nèi)容要介紹:</p> === 編程緩存Programmatic Caching === <p style="text-indent:2em;">Cache對象定義在System.Web.Caching命名空間,可以使用HttpContext類的Cache屬性或Page對象的Cache屬性來得到Cache的引用,Cache對象除了存儲鍵值對以外,還可以存儲.net框架的對象。下面介紹相應的依賴和過期策略。</p> ===依賴和過期策略 === <p style="text-indent:2em;">當向緩存中加數(shù)據(jù)時,可以指定它的依賴關系來實現(xiàn)在某些情況下強制移除它??捎玫姆桨赴ㄒ韵聨追N:</p> :1.文件依賴(File Dependency)——當硬盤上的某個(某些)文件更改時,強制移除緩存數(shù)據(jù); 如: :CacheDependency cDependency = new :CacheDependency(Server.MapPath("authors.[[XML]]")); :Cache.Insert("CachedItem", item, cDependency); :2.鍵值依賴(Key Dependency)——指定緩存中的某個數(shù)據(jù)項更改時移除。如: :// Create a cache entry. :Cache["key1"] = "Value 1"; :// Make key2 dependent on key1. :String[] dependencyKey = new String[1]; :dependencyKey[0] = "key1"; :CacheDependency dependency = new CacheDependency(null, dependencyKey); :Cache.Insert("key2", "Value 2", dependency); :3.基于時間的過期策略——按照預先定義的時間策略來使數(shù)據(jù)失效,可以是[[絕對時間]](如某個日期的18:00)也可以是相對現(xiàn)在的相對時間。如: :/// Absolute expiration :Cache.Insert("CachedItem", item, null, DateTime.Now.AddSeconds(5),Cache.NoSlidingExpiration); :/// Sliding expiration :Cache.Insert("CachedItem", item, null, Cache.NoAbsoluteExpiration, :TimeSpan.FromSeconds(5)); <p style="text-indent:2em;">使用太短和太長的過期時間都不行,不是造成用不上的緩存數(shù)據(jù),就是緩存了陳舊的數(shù)據(jù)并加重了緩存負擔,所以可以使用高并發(fā)的測試來決定過期時間的最佳值。</p> '''對緩存項使用[[優(yōu)先級]] ''' <p style="text-indent:2em;">當運行應用程序的服務器內(nèi)存不足時,會自動清除緩存中的數(shù)據(jù),稱為“清除scavenging”。此時,Cache對象根據(jù)緩存項的優(yōu)先級來決定先移除哪些[[緩存數(shù)據(jù)]],你可以在代碼中指定緩存項的優(yōu)先級。參看MSDN中“CacheItemPriority 枚舉”,如:</p> :Cache.Insert("DSN", connectionString, null, d, t, CacheItemPriority.High, onRemove); '''刷新數(shù)據(jù)(清除緩存) ''' <p style="text-indent:2em;">沒有直接的方法來刷新Asp.net的輸出緩存,但是有替代方法(設置所有數(shù)據(jù)失效),比如:Response.Cache.SetExpires(DateTime.Now) <p style="text-indent:2em;">這可以清除緩存,但頁面上并不立刻體現(xiàn)出來,直到最初的緩存期結束,比如:<%@ OutputCache Duration="10" VaryByParam="none" %>指令指定的緩存只會在10秒后才清除。通常并不需要清除所有緩存項,你只要重新加載數(shù)據(jù)更新緩存就夠了。</p> '''輸出緩存(Output Cache) ''' <p style="text-indent:2em;">Page Output Caching將對頁面請求的響應放入緩存中,后續(xù)對此頁面的請求將直接從緩存中得到信息而不是重建此頁面。可以通過添加Page指令(高級別,聲明實現(xiàn))來實現(xiàn),也可以使用HTTPCachePolicy類來實現(xiàn)(低級別,程序實現(xiàn))。本指南不打算介紹技術細節(jié),只給出如何更好使用的指南和最佳實踐。有四方面的內(nèi)容:</p> #決定緩存的內(nèi)容 # 緩存動態(tài)頁面 #控制緩存的位置 # 配置頁面輸出緩存 ===頁面片斷緩存=== :有時候緩存整個頁面并不靈活,同時內(nèi)存的發(fā)但也比較大,這時候應考慮片斷緩存。頁面片斷緩存適合以下類型的數(shù)據(jù): *創(chuàng)建開銷很大的頁面片斷(控件); *包含靜態(tài)數(shù)據(jù)的頁面片斷; *可被多個用戶使用的頁面片斷; *多個頁面共享的頁面片斷(如公用菜單條) '''以下是緩存部分頁面的例子: ''' :// Partial caching for 120 seconds :[System.Web.UI.PartialCaching(120)] :public class WebUserControl : System.Web.UI.UserControl :{ :// Your Web control code :} ==相關條目== *[[互聯(lián)網(wǎng)]] == 參考來源 == *[http://baike.baidu.com/view/907.htm?fr=ala0_1_1 參考來源] *[http://www.blue1000.com/bkhtml/2007-01/49856.htm 參考來源2] [[category:計算機術語|H]]
摘要:
請注意,您對站長百科的所有貢獻都可能被其他貢獻者編輯,修改或刪除。如果您不希望您的文字被任意修改和再散布,請不要提交。
您同時也要向我們保證您所提交的內(nèi)容是您自己所作,或得自一個不受版權保護或相似自由的來源(參閱
Wordpress-mediawiki:版權
的細節(jié))。
未經(jīng)許可,請勿提交受版權保護的作品!
取消
編輯幫助
(在新窗口中打開)
取自“
http://kktzf.com.cn/wiki/緩存
”