針對(duì)許多用戶反饋創(chuàng)建文件較大的下載任務(wù)時(shí),可能出現(xiàn)磁盤繁忙的問題。迅雷X10.1.16版本提供了“快速申請(qǐng)磁盤空間”的新方式,可以避免因?yàn)樯暾?qǐng)磁盤空間造成的“磁盤繁忙”。那么“快速申請(qǐng)磁盤空間”是什么原理?現(xiàn)在迅雷官方給出了解答。
這個(gè)功能推出后,引起了部分用戶的好奇,想要更深入的了解這個(gè)功能。那得從微軟推出Windows Vista引起的一個(gè)“問題”說起。
問題起因:
2006年11月,Windows Vista發(fā)布,隨之帶來了“用戶帳戶控制功能(User Account Control,簡(jiǎn)稱UAC)”
UAC功能對(duì)磁盤的權(quán)限控制給當(dāng)時(shí)的迅雷帶來了一個(gè)大麻煩。
沒有管理員權(quán)限的情況下,申請(qǐng)磁盤空間并進(jìn)行隨機(jī)寫入時(shí),會(huì)觸發(fā)Windows對(duì)所申請(qǐng)的磁盤空間進(jìn)行初始化操作。
Windows之所以作出這個(gè)限制,可能是因?yàn)閃indows的文件系統(tǒng)在刪除文件時(shí),并沒有真的將磁盤上的文件數(shù)據(jù)擦除,而是給數(shù)據(jù)加上“已刪除”標(biāo)記了事。
但是Windows擔(dān)心未經(jīng)用戶授權(quán)的程序訪問到磁盤上被標(biāo)記為“已刪除”的內(nèi)容,所以增加了初始化環(huán)節(jié),其實(shí)就是擦除磁盤上標(biāo)記為“已刪除”的數(shù)據(jù)。
這個(gè)擦除過程就是把磁盤上對(duì)應(yīng)的區(qū)塊給寫成零。寫零這個(gè)過程就跟往磁盤里寫數(shù)據(jù)一樣,磁盤的寫入性能決定了寫零的速度。
比如迅雷要下載一個(gè)1000MB的文件,那么Windows就會(huì)初始化1000MB的磁盤空間,磁盤的寫入性能是100MB/s,那么可知Windows對(duì)磁盤完成初始化需要10秒。
這10秒內(nèi),磁盤的寫入性能將會(huì)100%被占用,導(dǎo)致磁盤繁忙,電腦卡頓。而且此時(shí)迅雷是無法向磁盤的這個(gè)區(qū)塊寫入任何數(shù)據(jù)的,也就導(dǎo)致迅雷沒有任何下載速度。
解決這個(gè)問題的關(guān)鍵點(diǎn),就是要找出一種方法,讓迅雷申請(qǐng)磁盤空間時(shí)具有管理員權(quán)限。
解決方案A:
迅雷為了解決這個(gè)問題,首先想到的解決方案是每次啟動(dòng)迅雷都申請(qǐng)管理員權(quán)限。
▲UAC提示框
但是,讓用戶每次啟動(dòng)迅雷都彈一個(gè)UAC的提示框,體驗(yàn)實(shí)在太差。何況很多用戶啟動(dòng)迅雷只是為了打開下載好的文件,并不進(jìn)行下載。這種死板的做法就被否了。
解決方案B:
這時(shí),我們有個(gè)比較熟悉Windows的開發(fā)想到,Windows的系統(tǒng)服務(wù)是可以直接獲得管理員權(quán)限的,迅雷創(chuàng)建一個(gè)系統(tǒng)服務(wù),專門用來幫忙申請(qǐng)磁盤空間不就好了嗎?
于是迅雷就開發(fā)了“XLServicePlatform”服務(wù),當(dāng)迅雷需要申請(qǐng)大于100MB的磁盤空間時(shí),就通過這個(gè)服務(wù)進(jìn)行申請(qǐng)。
這樣一來,就在不彈出UAC提示框的前提下,把問題解決了。
問題再現(xiàn):
但是最近這段時(shí)間,我們發(fā)現(xiàn)越來越多的用戶反映,用迅雷下載大文件的時(shí)候“電腦很卡、沒速度、磁盤繁忙”等問題。
經(jīng)過跟許多用戶遠(yuǎn)程協(xié)助發(fā)現(xiàn),他們的“XLServicePlatform”服務(wù)都被停止了。于是迅雷無法通過服務(wù)申請(qǐng)磁盤空間,導(dǎo)致下載大文件時(shí),需要等待Windows初始化磁盤。
奇怪的是,用戶都說自己沒有手動(dòng)停止過這個(gè)服務(wù)。
后來我們發(fā)現(xiàn),這些用戶都安裝了“360安全衛(wèi)士”,經(jīng)過我們測(cè)試發(fā)現(xiàn),360安全衛(wèi)士的加速功能會(huì)建議用戶關(guān)閉“迅雷基礎(chǔ)服務(wù)”,其實(shí)就是把“XLServicePlatform”服務(wù)停止了。。。
于是我們就找360安全衛(wèi)士的人反饋了這個(gè)問題,介紹了這個(gè)服務(wù)對(duì)于迅雷的重要性,希望360不要把這個(gè)服務(wù)列為“建議關(guān)閉”。
而且這個(gè)服務(wù)本身不占什么內(nèi)存,但是關(guān)閉之后,對(duì)用戶體驗(yàn)的負(fù)面影響很大。
經(jīng)過幾輪溝通后,結(jié)果就是360安全衛(wèi)士一直都沒有進(jìn)行更改。。。
解決方案C:
既然很多用戶的XLServicePlatform服務(wù)會(huì)被360安全衛(wèi)士停止,那么迅雷就需要一個(gè)服務(wù)不能正常運(yùn)行時(shí)的備份方案。
這個(gè)方案就是10.1.16版本上新增的“快速申請(qǐng)磁盤空間助手”功能,它的原理很簡(jiǎn)單,就是個(gè)獨(dú)立的進(jìn)程,在迅雷需要時(shí)啟動(dòng)它申請(qǐng)管理員權(quán)限,然后幫迅雷申請(qǐng)磁盤空間。
迅雷啟動(dòng)時(shí),檢測(cè)到自身不具有管理員權(quán)限,且XLServicePlatform服務(wù)沒有正常運(yùn)行,即判斷當(dāng)前需要“快速申請(qǐng)磁盤空間助手”幫助申請(qǐng)磁盤空間。但是此時(shí)并不會(huì)立刻彈出UAC提示框。
而是當(dāng)迅雷需要下載大于100MB的文件時(shí),先詢問用戶選擇哪種申請(qǐng)磁盤空間的方式。
如果用戶選擇“快速方式”,這時(shí)才會(huì)拉起“快速申請(qǐng)磁盤空間助手”進(jìn)程申請(qǐng)管理員權(quán)限(此時(shí)會(huì)彈一次UAC提示框),然后再由它幫迅雷申請(qǐng)磁盤空間。
這個(gè)方式雖然要彈一次UAC提示框,但是總好過方案A那種每次啟動(dòng)迅雷都彈,而且作為方案B的備用方案,用戶體驗(yàn)也不算太糟糕。