1、什麼是Cache?作用是什麼?
Cache指的是緩存。
高速緩存(英語:cache,/kæʃ/ kash [2][3][4])簡稱緩存,原始意義是指訪問速度比一般隨機存取存儲器(RAM)快的一種RAM,通常它不像系統主存那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。
提供「緩存」的目的是為了讓數據訪問的速度適應CPU的處理速度,其基於的原理是內存中「程序執行與數據訪問的局域性行為」,即一定程序執行時間和空間內,被訪問的代碼集中於一部分。
為了充分發揮緩存的作用,不僅依靠「暫存剛剛訪問過的數據」,還要使用硬體實現的指令預測與數據預取技術——盡可能把將要使用的數據預先從內存中取到緩存里。
(1)cache伺服器擴展資料
緩存的特點
緩存是指可以進行高速數據交換的存儲器,它先於內存與CPU交換數據,因此速率很快。L1 Cache(一級緩存)是CPU第一層高速緩存。
內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般L1緩存的容量通常在32—256KB。
L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速率與主頻相同,而外部的二級緩存則只有主頻的一半。
L2高速緩存容量也會影響CPU的性能,原則是越大越好,普通台式機CPU的L2緩存一般為128KB到2MB或者更高,筆記本、伺服器和工作站上用CPU的L2高速緩存最高可達1MB-3MB。
緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速率就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。
隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據是被訪問最頻繁的。
2、Webcache伺服器
秒開緩存伺服器,傻瓜式部署方式,方便快捷
3、緩存伺服器的緩存概念
這是兩種主要的Web緩存:
直接緩存,將用戶頻繁訪問的來自Internet伺服器的Web對象的拷貝保存在企業本地網路中。
反向緩存,企業內部Web伺服器的Web對象的拷貝保存在企業網路邊緣的代理伺服器上以提高外界訪問企業站點的性能。
Web緩存可以根據不同等級進行配置:
本地緩存:將Web對象緩存的拷貝保存在本地計算機中。大多數流行的Web瀏覽器默認情況下保留一個先前訪問對象的緩存。例如,Internet Explorer稱之為「臨時Internet文件」。本地緩存拷貝只是在用戶頻繁地從同一台機器訪問頁面時有用。
代理緩存:代理伺服器是為公司內的多個用戶/客戶計算機緩存Web對象的單獨機器。它們是位於客戶端和託管的Web伺服器之間的計算機,而且它們比本地緩存效率更高,因為在企業本地網路中的任何用戶或計算機訪問某個Web對象時,緩存拷貝對想訪問該對象的任何其他用戶/計算機是可用的,無需到Internet伺服器上再次下載它。代理緩存可以在網路邊緣與防火牆結合使用。
微軟的ISA Server和BlueCoat的工具一樣,既包括防火牆也包括緩存代理伺服器。緩存伺服器也可以是單獨的機器,運行免費的緩存軟體或商業產品,例如:
Linux版的Squid免費緩存代理
MOWS基於Java分布式web和緩存伺服器
Vicomsoft RapidCache Server for Windows或Macintosh
WinProxy for Windows
可升級的緩存解決方案
隨著公司的擴大,單一的Web緩存伺服器可能無法處理所有的通信或存儲足夠的Web對象。在這種情況下,可以擴展緩存解決方案以建立一個緩存陣列——一組共同工作以便在組內分配緩存負載的緩存代理伺服器。萬一某個緩存伺服器停機,還提供預設的容量。
要在陣列中操作,緩存伺服器必須能夠彼此使用協議進行通信,例如:
WCCP(Web緩存協調協議),Cisco緩存產品以及諸如Squid這樣的開源代理使用。
ICP(Internet緩存協議),被Squid和BlueCoat支持。
CARP(緩存陣列路由協議),被ISA Server Enterprise Edition用來管理緩存伺服器陣列的失效轉移和負載平衡。
CARP能夠支持幾乎無限的線性擴展以滿足快速增長型企業的需求。當向某個陣列中添加或移除一台伺服器時,CARP自動調整並再指定URL以有效地分布負載。
緩存陣列能夠以等級的或分布式的架構排列。在分布式緩存中,陣列中所有代理伺服器處在一個「平等地位」而且負載在它們之間進行分配。在分等級的緩存中,代理以鏈式進行配置,它們處在不同的等級,所以伺服器或陣列連接到其它離Internet更近的伺服器或陣列(離Internet最近的那些伺服器或陣列被看作「上游的」,那些最遠的被看作「下游的」)。這樣,緩存內容會盡可能地靠近需要它的用戶。
陣列是高度可升級的,因為可以向陣列添加伺服器,或向分等級的架構增加陣列等級,而無需擾亂目 前的緩存解決方案。
另一個可擴展性問題是使用緩存減少分支機構網路帶寬的能力。分支機構代理可能沒有直接連接到Internet,但是可以使用撥號連接或辦公室到辦公室的WAN連接以便從總公司的上游代理伺服器上請求Web對象。
另一個選擇是為需要向消費者提供基於Web的應用,可使用諸如由Akamai提供的服務。他們的Web Application Accelerator服務通過下列方法優化性能:
向他們的邊緣伺服器動態映射請求,並監視Internet路由以便在最快和最可靠的路由上傳輸。
利用壓縮技術和預取技術(pre-fetching)以最小化帶寬使用率。
用安全套接層(SSL)保護Web傳輸。
緩存支持的有些硬體標准:
目前緩存支持的硬體標准:
內存不超過4G,超過的只識別4G。
硬碟不超過2T,超過的只識別2T
存儲硬碟數量最大支持4塊(如果系統盤是電子盤不包含在內)
另外推薦使用INTEL的機器和網卡。
4、伺服器根目錄里多出個cache文件夾,這個每天都有文件產生,這是什麼?
這個文件夾是臨時緩存文件夾,很多軟體啟動之後都會在這個文件夾里放一些緩存文件。這個很正常。
有這個緩存,會對你的伺服器使用頻率較高的軟體有好處,
適當的做定期清理就OK,沒必要太在意。
5、c#cache 緩存是存在什麼地方的?
1.Cache 是分配在伺服器上的一個公共的內存片。cache 是有時間限制的,超過了伺服器設定的過期時間,它就會被伺服器回收。
所謂公共指的cache只要一創建是任何一個客戶端瀏覽器都可以通過後台代碼訪問到它,它面向的是所有用戶,相對而言session也是伺服器上的一 段內存,但他面向的是單個用戶。它是伺服器的一段內存塊,也就是說每個cache一經創建就佔用了伺服器資源的。所以從這點來說我們就可以說:並不是 cache越多越好。
cache 可以存放任何對象
2.Cache 怎麼樣創建以及怎麼樣銷毀
創建cache
在DotNet環境下通過Cache.Insert(string key,object o)方法創建。
其中key 代表cache的ID,o代表存到cache里的對象。
銷毀cache
通過方法Cache.Remove(string key)
其中key 代表cache的 ID.
調用cache
Cache支持裝箱/拆箱操作。如你可以把一個DataSet對象ds通過Cache.Insert(「dsCache」,ds)的方式存到Cache中,可以通過拆箱操作 DataSet ds = (DataSet)Cache[「dsCache」]來訪問它。
3.什麼時候用cache
Cache 一般用於數據較固定,用的較頻繁的地方。例如可以把進銷存系統中可以把產品信息存入cache,在用戶調用產品信息時通過調用cache即可,這樣從很大 程度上減少了用戶與資料庫的交互,提高了系統的性能。反之,cache不適合用在數據變動快,使用范圍很窄的地方。例如把一個具體采購單存入 cache中。
4.cache 調用注意事項
Cache是有時間限制的。超過了伺服器設置的過期時間,就會被伺服器回收。當cache被回收後對應的內存塊就會被清空,再次通過cache[「cachekey」]訪問對象時返回的就是null值。所以以下這種調用就會出現異常
DataSet ds = (DataSet)Cache[「cacheds」];
DataRow dr = ds.Table[0].Row[0]; //出錯,ds為null值,不存在表0。
正確的寫法應該是:
DataSet ds;
if(Cache[「cacheds」] != null)
{
ds = (DataSet)Cache[「cacheds」];
}
else
{
ds= GetDsFromDataBase();
}
DataRow dr = ds.Table[0].Row[0];
6、什麼是Cache
所謂公共指的cache只要一創建是任何一個客戶端瀏覽器都可以通過後台代碼訪問到它,它面向的是所有用戶,相對而言session也是伺服器上的一段內存,但他面向的是單個用戶。它是伺服器的一段內存塊,也就是說每個cache一經創建就佔用了伺服器資源的。所以從這點來說我們就可以說:並不是cache越多越好。cache 是有時間限制的,超過了伺服器設定的過期時間,它就會被伺服器回收。cache 可以存放任何對象在DotNet環境下通過Cache.Insert(string key,object o)方法創建。其中key 代表cache的ID,o代表存到cache里的對象。銷毀cache 通過方法Cache.Remove(string key)其中key 代表cache的 ID.調用cacheCache支持裝箱/拆箱操作。如你可以把一個DataSet對象ds通過Cache.Insert(dsCache,ds)的方式存到Cache中,可以通過拆箱操作DataSet ds = (DataSet)Cache[dsCache]來訪問它。Cache 一般用於數據較固定,用的較頻繁的地方。例如可以把進銷存系統中可以把產品信息存入cache,在用戶調用產品信息時通過調用cache即可,這樣從很大程度上減少了用戶與資料庫的交互,提高了系統的性能。反之,cache不適合用在數據變動快,使用范圍很窄的地方。例如把一個具體采購單存入 cache中。4.cache 調用注意事項Cache是有時間限制的。超過了伺服器設置的過期時間,就會被伺服器回收。當cache被回收後對應的內存塊就會被清空,再次通過cache[cachekey]訪問對象時返回的就是null值。所以以下這種調用就會出現異常DataSet ds = (DataSet)Cache[cacheds];DataRow dr = ds.Table[0].Row[0]; //出錯,ds為null值,不存在表0。正確的寫法應該是:DataSet ds;if(Cache[cacheds] != null){ds = (DataSet)Cache[cacheds];}else{
7、linux下如何做cache伺服器?
是代理伺服器嗎? 安裝配置squid就可以了。
8、DNS Cache 服務是?
這個服務的作用就是可以使得你上網的速度更快一點。
原理是這樣的:當你第一次訪問一個網站的時候,DNS伺服器要通過別的伺服器去查詢網站所對應的IP,這個查詢的時間會比較長,同時DNS伺服器就把該網站和其對應的IP存儲在DNS cache裡面了。當你第二次訪問時DNS伺服器就直接從cache裡面找對應的IP,這樣訪問該網站的速度就會快很多。
所以要不要開啟此服務就看你自己的了~~~~~~
不會很佔用資源滴~~~~~~~~
9、緩存伺服器Cache-only是怎麼工作的
4.CDN 的工作原理
在描述CDN的實現原理,讓我們先看傳統的未加緩存服務的訪問過程,以便了解CDN緩存訪問方式與未加緩存訪問方式的差別: http://www.video.com.cn/club/attachment.php?aid=939&k=&t=1218114144&noupdate=yes
由上圖可見,用戶訪問未使用CDN緩存網站的過程為:
1)、用戶向瀏覽器提供要訪問的域名;
2)、瀏覽器調用域名解析函數庫對域名進行解析,以得到此域名對應的IP地址;
3)、瀏覽器使用所得到的IP地址,域名的服務主機發出數據訪問請求;
4)、瀏覽器根據域名主機返回的數據顯示網頁的內容。
通過以上四個步驟,瀏覽器完成從用戶處接收用戶要訪問的域名到從域名服務主機處獲取數據的整個過程。CDN網路是在用戶和伺服器之間增加Cache層,如何將用戶的請求引導到Cache上獲得源伺服器的數據,主要是通過接管DNS實現,下面讓我們看看訪問使用CDN緩存後的網站的過程: http://www.video.com.cn/club/attachment.php?aid=940&k=&t=1218114144&noupdate=yes
通過上圖,我們可以了解到,使用了CDN緩存後的網站的訪問過程變為:
1)、用戶向瀏覽器提供要訪問的域名;
2)、瀏覽器調用域名解析庫對域名進行解析,由於CDN對域名解析過程進行了調整,所以解析函數庫一般得到的是該域名對應的CNAME記錄,為了得到實際IP地址,瀏覽器需要再次對獲得的CNAME域名進行解析以得到實際的IP地址;在此過程中,使用的全局負載均衡DNS解析,如根據地理位置信息解析對應的IP地址,使得用戶能就近訪問。
3)、此次解析得到CDN緩存伺服器的IP地址,瀏覽器在得到實際的IP地址以後,向緩存伺服器發出訪問請求;
4)、緩存伺服器根據瀏覽器提供的要訪問的域名,通過Cache內部專用DNS解析得到此域名的實際IP地址,再由緩存伺服器向此實際IP地址提交訪問請求;
5)、緩存伺服器從實際IP地址得得到內容以後,一方面在本地進行保存,以備以後使用,二方面把獲取的數據返回給客戶端,完成數據服務過程;
6)、客戶端得到由緩存伺服器返回的數據以後顯示出來並完成整個瀏覽的數據請求過程。
通過以上的分析我們可以得到,為了實現既要對普通用戶透明(即加入緩存以後用戶客戶端無需進行任何設置,直接使用被加速網站原有的域名即可訪問),又要在為指定的網站提供加速服務的同時降低對ICP的影響,只要修改整個訪問過程中的域名解析部分,以實現透明的加速服務,下面是CDN網路實現的具體操作過程。
1)、作為ICP,只需要把域名解釋權交給CDN運營商,其他方面不需要進行任何的修改;操作時,ICP修改自己域名的解析記錄,一般用cname方式指向CDN網路Cache伺服器的地址。
2)、作為CDN運營商,首先需要為ICP的域名提供公開的解析,為了實現sortlist,一般是把ICP的域名解釋結果指向一個CNAME記錄;
3)、當需要進行sorlist時,CDN運營商可以利用DNS對CNAME指向的域名解析過程進行特殊處理,使DNS伺服器在接收到客戶端請求時可以根據客戶端的IP地址,返回相同域名的不同IP地址;
4)、由於從cname獲得的IP地址,並且帶有hostname信息,請求到達Cache之後,Cache必須知道源伺服器的IP地址,所以在CDN運營商內部維護一個內部DNS伺服器,用於解釋用戶所訪問的域名的真實IP地址;
5)、在維護內部DNS伺服器時,還需要維護一台授權伺服器,控制哪些域名可以進行緩存,而哪些又不進行緩存,以免發生開放代理的情況。
10、Cache何時使用及使用方法
Cache 即高速緩存.那麼cache是怎麼樣提高系統性能與運行速度呢?是不是在任何情況下用cache都能提高性能?是不是cache用的越多就越好呢?下面是個人寫下的總結如下,有不對的地方,請各位指正:
1.Cache 是怎麼樣工作的?
Cache 是分配在伺服器上的一個公共的內存片。
所謂公共指的cache只要一創建是任何一個客戶端瀏覽器都可以通過後台代碼訪問到它,它面向的是所有用戶,相對而言session也是伺服器上的一 段內存,但他面向的是單個用戶。它是伺服器的一段內存塊,也就是說每個cache一經創建就佔用了伺服器資源的。所以從這點來說我們就可以說:並不是 cache越多越好。
cache 是有時間限制的,超過了伺服器設定的過期時間,它就會被伺服器回收。
cache 可以存放任何對象
2.Cache 怎麼樣創建以及怎麼樣銷毀
創建cache
在DotNet環境下通過Cache.Insert(string key,object o),Insert(objectkey, objObject, CacheDependency Dependency, DateTime.absoluteExpiration, TimeSpan.Zero);等方法創建。
其中key 代表cache的ID,o代表存到cache里的對象,DateTime.absoluteExpiration代碼有效時間段。