的,我想知道方法File.ReadAllText 這裏的行爲我的代碼示例:File.ReadAllText利用CACHE
uxJavaScriptTinyMCEDisplayer.Text = File.ReadAllText(Server.MapPath("TinyMCEJavaScriptAdmin.txt"));
File.ReadAllText有一些緩存行爲?所以第一次讀取文件時,會保存在內存中,而不是再次重新讀取?
謝謝
的,我想知道方法File.ReadAllText 這裏的行爲我的代碼示例:File.ReadAllText利用CACHE
uxJavaScriptTinyMCEDisplayer.Text = File.ReadAllText(Server.MapPath("TinyMCEJavaScriptAdmin.txt"));
File.ReadAllText有一些緩存行爲?所以第一次讀取文件時,會保存在內存中,而不是再次重新讀取?
謝謝
在.Net中沒有直接緩存,但是,您通過操作系統間接獲得緩存行爲。
Windows非常適合緩存內存中的文件內容,並且有一個便於文件系統內容在內存中緩存的層。但正如Frédéric在他的評論中指出的那樣,你不應該將這種行爲視爲內存壓力,緩存老化等等,這可能意味着緩存內容被丟棄。
如果有足夠的內存,操作系統可以很好地緩存。
更新
這是一個老的文章(Win2K系統),但給出了一些想法,OS磁盤緩存。
感謝您的幫助 – GibboK 2010-12-16 13:20:27
沒有緩存。它將讀取給定路徑中文件的當前內容。
這取決於您的操作系統。根據內存條件和文件大小,它可能會在內存中緩存一段時間,但不應該依賴它。 – 2010-12-16 12:18:04
@Frédéric我剛剛用Reflector檢查了ReadAllText方法的源代碼,並且無法在任何地方看到任何緩存,只是將它追蹤爲調用'kernel32.dll'中的'ReadFile'方法 - 可以緩存哪些條件? – 2010-12-16 12:22:29
@Shadow Wizard,我的意思是操作系統本身執行緩存,比ReadFile()更低。原始磁盤讀取可以保存在內存中,以便後續對相同數據的讀取請求不需要打到磁盤。 – 2010-12-16 12:25:51