今天的文章比較短,但從實際上解決了大多數命令行Shell和Windows UI的問題。此問題是,“為什么我不能通過Windows資源管理器來查看文件夾大小了呢?”最簡單的回答便是,“微軟的設計使然”。用戶其實可以通過將鼠標懸停在Windows資源管理器上的方式來查看并獲得文件夾大小(如下圖):
禁用此項目主要原因是微軟從操作系統性能方面考慮,在多數服務器級Windows上默認禁用此查看功能。因為每當用戶將鼠標懸停在Windows資源管理器查看文件夾大小時,操作系統會將當前文件夾及所有子文件夾中的內容按文件夾結構進行遞歸掃描,并將掃描所得的文件大小結果求和,以便得出整個當前文件夾大小。其實這樣的設計和處理方式必然會帶來非常大的CPU開銷,試想一個用戶嵌套了上千個文件夾,并在不同的子文件夾中有成百上千的文件,如果要查看主文件夾大小會帶來多么大的CPU開銷和運算時間。如果考慮更惡劣的情況,當某個用戶通過網絡方式訪問并預覽文件夾大小時,又會是什么樣的情形?
然而微軟仍然通過用戶自定義的方式提供了這個選項:
在某些情況下(復雜多層次嵌套文件夾結構),在本地操作系統上關閉此選項可以提高操作系統性能。當客戶端計算機通過Lan/Wan來預覽復雜文件夾結構時,將會遇到嚴重的延遲。另外在客戶端有一個NoRemoteRecursiveEvents注冊表值(HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer)可供用戶配置使用。當此值設置為1時,服務器端子文件夾結構變化的通知會被禁用,但主文件夾(1級根)的更改和變化通知仍會發送給客戶端。
其它資源:
http://support.microsoft.com/kb/885189/en-us
http://support.microsoft.com/kb/831129/en-us