Web控件加載裝置和方法
【專利摘要】本發(fā)明提供了一種WEB控件加載裝置,包括:文件描述單元,用于將外部js文件描述為對應(yīng)的配置文件;文件解析及計算單元,用于配置文件解析、js文件分析和Hash值計算處理;壓縮js文件檢查單元,用于根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮js文件;壓縮js文件加載及應(yīng)用單元,用于基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。本發(fā)明還提供了一種WEB控件加載方法。通過本發(fā)明的技術(shù)方案,可以在現(xiàn)有的控件加載方式基礎(chǔ)上,充分利用單對象類型完成多對象類型的控件加載,建立多對象類型參與的控件加載的通用、統(tǒng)一加載思路。
【專利說明】WEB控件加載裝置和方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,具體地,涉及一種WEB控件加載裝置和一種WEB控件加載方法。
[0003]
【背景技術(shù)】
[0004]隨著Ajax的應(yīng)用普及,WEB開發(fā)已經(jīng)在在更多的系統(tǒng)中得到了廣泛的應(yīng)用并且已經(jīng)得到了越來越多程序員的重視。在可以很好的提高用戶體驗的同時,WEB應(yīng)用一個重要的方面是需要引入大量的JS、CSS等額外文件的信息。而引入JS、CSS文件等也存在不可忽視的缺點就是引入量多了會嚴重影響WEB應(yīng)用的速度。因為目前的瀏覽器在加載外部的如JS等文件時,在同一時間,頁面只會加載一個文件。在第一個文件加載并執(zhí)行完之前,第二個要引入的文件不會下載和執(zhí)行。所以如果提高JS等的加載及執(zhí)行速度是需要我們關(guān)注的重大課題。
[0005]為了提高外部文件如JS等文件的加載及執(zhí)行速度,在以往的實現(xiàn)中,主要采用以下幾種方式:
優(yōu)先將頁面的靜態(tài)內(nèi)容先加載完,再來處理JS的調(diào)用,采用這樣的方案,在頁面的加載過程中不會因為個別的JS調(diào)用加載緩慢而影響整個頁面的加載。但是如果頁面引用大量的JS代碼時,此方案并不適用。
[0006]優(yōu)化JS代碼的的效率,將飲用的js頁面做壓縮處理,目前一般的網(wǎng)站都采用了此方式。為了提高JS的下載速度,壓縮JS文件可以減少JS文件的大??;另外,把多個JS文件合并成一個也能因為減少服務(wù)器的響應(yīng)次數(shù)而加快網(wǎng)頁下載。但是,如果引用JS文件過多的情況下,壓縮也只能部分提高速度,而將多個JS合并會增加JS文件的復(fù)雜性,并且降低了代碼的可維護性。
[0007]讓影響頁面速度JS函數(shù)延遲執(zhí)行,延遲執(zhí)行在一定程度上可以提高頁面的渲染速度,但還是需要把多個js文件引入。無法解決系統(tǒng)中需要引用大量JS文件的加載問題。
[0008]因此,需要一種新的控件加載技術(shù),可以在現(xiàn)有的控件加載方式基礎(chǔ)上,充分利用單對象類型完成多對象類型的控件加載,建立多對象類型參與的控件加載的通用、統(tǒng)一加載思路。
[0009]
【發(fā)明內(nèi)容】
[0010]本發(fā)明正是基于上述問題,提出了一種新的控件加載技術(shù),可以在現(xiàn)有的控件加載方式基礎(chǔ)上,充分利用單對象類型完成多對象類型的控件加載,建立多對象類型參與的控件加載的通用、統(tǒng)一加載思路。
[0011]有鑒于此,本發(fā)明提出了一種WEB控件加載裝置,包括:文件描述單元,用于基于待應(yīng)用的系統(tǒng),將待應(yīng)用的外部js文件描述為一個對應(yīng)的配置文件;文件解析及計算單元,用于基于描述的配置文件,進行解析、js文件分析和Hash值計算處理;壓縮js文件檢查單元,用于根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮js文件;壓縮js文件加載及應(yīng)用單元,用于基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。在該技術(shù)方案中,只壓縮頁面所需js,使js的內(nèi)容最小化;而且可以重用合并的js文件,最大限度的優(yōu)化頁面js的請求數(shù)量與流量大小。
[0012]在上述技術(shù)方案中,優(yōu)選地,所述文件解析及計算單元,具體包括:配置文件解析模塊,用于基于描述的配置文件,進行解析;js文件分析模塊,用于基于對配置文件的解析結(jié)果,解析相應(yīng)的頁面應(yīng)用頁面,分析得到該頁面應(yīng)用頁面包含的js文件;Hash值計算模塊,用于根據(jù)分析得到的js文件和所有js文件名,計算得到相應(yīng)的Hash值。在該技術(shù)方案中,可以重用合并的js壓縮文件,從而有效的提供整個系統(tǒng)頁面的加載效率。
[0013]在上述技術(shù)方案中,優(yōu)選地,所述壓縮js文件加載及應(yīng)用單元,具體包括:壓縮js文件加載模塊,用于根據(jù)計算得到的Hash值,如果從緩存中能夠取出值,則直接從緩存中取出壓縮js文件的路徑,按照該路徑加載該壓縮js文件。在該技術(shù)方案中,在頁面加載時,預(yù)先計算每個頁面包含的頁面元素,包含布局跟控件從而實現(xiàn)頁面的按需加載。
[0014]在上述技術(shù)方案中,優(yōu)選地,所述壓縮js文件加載及應(yīng)用單元,具體還包括:js文件及存儲模塊,用于根據(jù)計算得到的Hash值,如果從緩存中取值結(jié)果為空,則將該Hash值包含的所有js文件進行合并壓縮,并將合并壓縮得到的壓縮js文件根據(jù)相應(yīng)的Hash值存入緩存中。在該技術(shù)方案中,將所需要的元素對應(yīng)的前臺js文件進行合并,并將合并后的文件進行壓縮,從而減少文件的加載量。
[0015]在上述技術(shù)方案中,優(yōu)選地,所述壓縮js文件加載及應(yīng)用單元,具體還包括:壓縮js文件應(yīng)用模塊,用于根據(jù)計算得到的Hash值,如果從緩存中取出的壓縮js文件與下一個應(yīng)用的頁面加載時包含的js文件相同,則直接使用該壓縮js文件。在該技術(shù)方案中,當(dāng)包含相布局或控件的頁面再進行加載時,可以直接利用以前頁面使用的合并js文件,從而減少文件壓縮合并時間,可以有效的加快文件的加載速度。
[0016]根據(jù)本發(fā)明的又一個方面,還提出了一種WEB控件加載方法,包括:步驟202:基于待應(yīng)用的系統(tǒng),將待應(yīng)用的外部js文件描述為一個對應(yīng)的配置文件;步驟204:基于描述的配置文件,進行解析、js文件分析和Hash值計算處理;步驟206:根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮j s文件;步驟208:基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。在該技術(shù)方案中,只壓縮頁面所需js,使js的內(nèi)容最小化;而且可以重用合并的js文件,最大限度的優(yōu)化頁面js的請求數(shù)量與流量大小。
[0017]在上述技術(shù)方案中,優(yōu)選地,所述步驟204,具體包括:步驟302:基于描述的配置文件,進行解析;步驟304:基于對配置文件的解析結(jié)果,解析相應(yīng)的頁面應(yīng)用頁面,分析得到該頁面應(yīng)用頁面包含的js文件;步驟306:根據(jù)分析得到的js文件和所有js文件名,計算得到相應(yīng)的Hash值。在該技術(shù)方案中,可以重用合并的js壓縮文件,從而有效的提供整個系統(tǒng)頁面的加載效率。
[0018]在上述技術(shù)方案中,優(yōu)選地,所述步驟208,具體包括:步驟402:根據(jù)計算得到的Hash值,如果從緩存中能夠取出值,則直接從緩存中取出壓縮js文件的路徑,按照該路徑加載該壓縮js文件。在該技術(shù)方案中,在頁面加載時,預(yù)先計算每個頁面包含的頁面元素,包含布局跟控件從而實現(xiàn)頁面的按需加載。
[0019]在上述技術(shù)方案中,優(yōu)選地,所述步驟208,具體還包括:步驟404:根據(jù)計算得到的Hash值,如果從緩存中取值結(jié)果為空,則將該Hash值包含的所有js文件進行合并壓縮,并將合并壓縮得到的壓縮js文件根據(jù)相應(yīng)的Hash值存入緩存中。在該技術(shù)方案中,將所需要的元素對應(yīng)的前臺js文件進行合并,并將合并后的文件進行壓縮,從而減少文件的加載量。
[0020]在上述技術(shù)方案中,優(yōu)選地,所述步驟208,具體還包括:步驟406:根據(jù)計算得到的Hash值,如果從緩存中取出的壓縮js文件與下一個應(yīng)用的頁面加載時包含的js文件相同,則直接使用該壓縮js文件。在該技術(shù)方案中,當(dāng)包含相布局或控件的頁面再進行加載時,可以直接利用以前頁面使用的合并js文件,從而減少文件壓縮合并時間,可以有效的加快文件的加載速度。
[0021]通過以上技術(shù)方案,可以在現(xiàn)有的控件加載方式基礎(chǔ)上,充分利用單對象類型完成多對象類型的控件加載,建立多對象類型參與的控件加載的通用、統(tǒng)一加載思路。
[0022]
【專利附圖】
【附圖說明】
[0023]圖1示出了根據(jù)本發(fā)明的實施例的WEB控件加載裝置的框圖;
圖2示出了根據(jù)本發(fā)明的實施例的WEB控件加載方法的流程圖;
圖3示出了根據(jù)本發(fā)明的實施例的文件解析及計算單元的流程圖;
圖4示出了根據(jù)本發(fā)明的實施例的壓縮js文件加載及應(yīng)用單元的流程圖;
圖5示出了傳統(tǒng)方案和本發(fā)明的流程對比圖;
圖6示出了本發(fā)明的實施例的WEB控件加載方法的詳細流程圖;
圖7示出了本發(fā)明的實施例的系統(tǒng)中布局、控件方案加載體系的原理圖;
圖8示出了本發(fā)明的實施例的布局的原理圖;
圖9和圖10示出了本發(fā)明的實施例的JS動態(tài)加載的具體實現(xiàn)過程的流程圖;
圖11和圖12示出了本發(fā)明的實施例的應(yīng)用系統(tǒng)的實際應(yīng)用場景測試截面圖;
圖13示出了本發(fā)明的實施例的頁面加載圖。
[0024]
【具體實施方式】
[0025]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和【具體實施方式】對本發(fā)明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
[0026]在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。
[0027]圖1示出了根據(jù)本發(fā)明的實施例的WEB控件加載裝置的框圖。
[0028]如圖1所示,根據(jù)本發(fā)明的實施例的WEB控件加載裝置100,包括:文件描述單元102,用于基于待應(yīng)用的系統(tǒng),將待應(yīng)用的外部js文件描述為一個對應(yīng)的配置文件;文件解析及計算單元104,用于基于描述的配置文件,進行解析、js文件分析和Hash值計算處理;壓縮js文件檢查單元106,用于根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮js文件;壓縮js文件加載及應(yīng)用單元108,用于基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。在該技術(shù)方案中,只壓縮頁面所需js,使js的內(nèi)容最小化;而且可以重用合并的js文件,最大限度的優(yōu)化頁面js的請求數(shù)量與流量大小。
[0029]在上述技術(shù)方案中,優(yōu)選地,文件解析及計算單元104,具體包括:配置文件解析模塊1042,用于基于描述的配置文件,進行解析;js文件分析模塊1044,用于基于對配置文件的解析結(jié)果,解析相應(yīng)的頁面應(yīng)用頁面,分析得到該頁面應(yīng)用頁面包含的js文件;Hash值計算模塊1046,用于根據(jù)分析得到的js文件和所有js文件名,計算得到相應(yīng)的Hash值。在該技術(shù)方案中,可以重用合并的js壓縮文件,從而有效的提供整個系統(tǒng)頁面的加載效率。
[0030]在上述技術(shù)方案中,優(yōu)選地,壓縮js文件加載及應(yīng)用單元108,具體包括:壓縮js文件加載模塊1082,用于根據(jù)計算得到的Hash值,如果從緩存中能夠取出值,則直接從緩存中取出壓縮js文件的路徑,按照該路徑加載該壓縮js文件。在該技術(shù)方案中,在頁面加載時,預(yù)先計算每個頁面包含的頁面元素,包含布局跟控件從而實現(xiàn)頁面的按需加載。
[0031]在上述技術(shù)方案中,優(yōu)選地,壓縮js文件加載及應(yīng)用單元108,具體還包括:js文件及存儲模塊1084,用于根據(jù)計算得到的Hash值,如果從緩存中取值結(jié)果為空,則將該Hash值包含的所有js文件進行合并壓縮,并將合并壓縮得到的壓縮js文件根據(jù)相應(yīng)的Hash值存入緩存中。在該技術(shù)方案中,將所需要的元素對應(yīng)的前臺js文件進行合并,并將合并后的文件進行壓縮,從而減少文件的加載量。
[0032]在上述技術(shù)方案中,優(yōu)選地,壓縮js文件加載及應(yīng)用單元108,具體還包括:壓縮js文件應(yīng)用模塊1086,用于根據(jù)計算得到的Hash值,如果從緩存中取出的壓縮js文件與下一個應(yīng)用的頁面加載時包含的js文件相同,則直接使用該壓縮js文件。在該技術(shù)方案中,當(dāng)包含相布局或控件的頁面再進行加載時,可以直接利用以前頁面使用的合并js文件,從而減少文件壓縮合并時間,可以有效的加快文件的加載速度。
[0033]圖2示出了根據(jù)本發(fā)明的實施例的WEB控件加載方法的流程圖。
[0034]如圖2所示,根據(jù)本發(fā)明的實施例的WEB控件加載方法,包括:步驟202:基于待應(yīng)用的系統(tǒng),將待應(yīng)用的外部js文件描述為一個對應(yīng)的配置文件;步驟204:基于描述的配置文件,進行解析、js文件分析和Hash值計算處理;步驟206:根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮js文件;步驟208:基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。在該技術(shù)方案中,只壓縮頁面所需js,使js的內(nèi)容最小化;而且可以重用合并的js文件,最大限度的優(yōu)化頁面js的請求數(shù)量與流量大小。
[0035]在上述技術(shù)方案中,優(yōu)選地,如圖3所示,步驟204,具體包括:步驟302:基于描述的配置文件,進行解析;步驟304:基于對配置文件的解析結(jié)果,解析相應(yīng)的頁面應(yīng)用頁面,分析得到該頁面應(yīng)用頁面包含的js文件;步驟306:根據(jù)分析得到的js文件和所有js文件名,計算得到相應(yīng)的Hash值。在該技術(shù)方案中,可以重用合并的js壓縮文件,從而有效的提供整個系統(tǒng)頁面的加載效率。
[0036]在上述技術(shù)方案中,優(yōu)選地,如圖4所示,步驟208,具體包括:步驟402:根據(jù)計算得到的Hash值,如果從緩存中能夠取出值,則直接從緩存中取出壓縮js文件的路徑,按照該路徑加載該壓縮js文件。在該技術(shù)方案中,在頁面加載時,預(yù)先計算每個頁面包含的頁面元素,包含布局跟控件從而實現(xiàn)頁面的按需加載。
[0037]在上述技術(shù)方案中,優(yōu)選地,如圖4所示,步驟208,具體還包括:步驟404:根據(jù)計算得到的Hash值,如果從緩存中取值結(jié)果為空,則將該Hash值包含的所有js文件進行合并壓縮,并將合并壓縮得到的壓縮js文件根據(jù)相應(yīng)的Hash值存入緩存中。在該技術(shù)方案中,將所需要的元素對應(yīng)的前臺js文件進行合并,并將合并后的文件進行壓縮,從而減少文件的加載量。
[0038]在上述技術(shù)方案中,優(yōu)選地,如圖4所示,步驟208,具體還包括:步驟406:根據(jù)計算得到的Hash值,如果從緩存中取出的壓縮js文件與下一個應(yīng)用的頁面加載時包含的js文件相同,則直接使用該壓縮js文件。在該技術(shù)方案中,當(dāng)包含相布局或控件的頁面再進行加載時,可以直接利用以前頁面使用的合并js文件,從而減少文件壓縮合并時間,可以有效的加快文件的加載速度。
[0039]本發(fā)明的技術(shù)方案,提供了一種智能的高可用性的WEB控件加載機制,具體為一種智能的高可用性的可提高WEB頁面加載速度的方案,在通常的WEB應(yīng)用中,往往需要引入大量的外在文件,例如JS文件、CSS文件等。特別是當(dāng)一個WEB頁面根據(jù)不同的業(yè)務(wù)需求展現(xiàn)界面不同時,引入的文件會有大量的增加。在根據(jù)實際的應(yīng)用場景,盡可能減少加載文件量,是提高頁面加載速度的重要課題。在頁面加載時,預(yù)先計算每個頁面包含的頁面元素,包含布局跟控件從而實現(xiàn)頁面的按需加載,同時,將所需要的元素對應(yīng)的前臺js文件進行合并,并將合并后的文件進行壓縮,從而減少文件的加載量,加快文件的加載速度。在某個應(yīng)用領(lǐng)域,多個應(yīng)用包含的控件是相同的,采用本發(fā)明的技術(shù)方案提出的方案,可以重用合并的js壓縮文件,從而有效的提供整個系統(tǒng)頁面的加載效率。
[0040]本發(fā)明的技術(shù)方案提出的方案,在頁面加載時,預(yù)先計算每個頁面包含的頁面元素,包含布局跟控件從而實現(xiàn)頁面的按需加載;同時,將所需要的元素對應(yīng)的前臺js文件進行合并,并將合并后的文件進行壓縮,從而減少文件的加載量;同時,當(dāng)包含相布局或控件的頁面再進行加載時,可以直接利用以前頁面使用的合并js文件,從而減少文件壓縮合并時間,可以有效的加快文件的加載速度。
[0041]為了提高JS等文件的加載及執(zhí)行速度,在以往的實現(xiàn)中,主要采用以下幾種方式:
優(yōu)先將頁面的靜態(tài)內(nèi)容先加載完,再來處理JS等文件的調(diào)用,采用這樣的方案,在頁面的加載過程中不會因為個別的JS文件調(diào)用加載緩慢而影響整個頁面的加載。但是如果頁面引用大量的動態(tài)的JS代碼時,此方案并不適用。
[0042]優(yōu)化JS代碼的的效率,將引用的JS頁面做壓縮處理,目前一般的網(wǎng)站都采用了此方式。為了提高JS的下載速度,壓縮Js文件可以減少JS文件的大??;另外,把多個JS文件合并成一個也能因為減少服務(wù)器的響應(yīng)次數(shù)而加快網(wǎng)頁下載。但是,如果引用JS文件過多的情況下,壓縮也只能部分提高速度,而將多個JS合并會增加JS文件的復(fù)雜性,并且降低了代碼的可維護性。
[0043]讓影響頁面速度的JS函數(shù)延遲執(zhí)行,延遲執(zhí)行在一定程度上可以提高頁面的渲染速度,但還是需要把多個JS文件引入。無法解決系統(tǒng)中需要引用大量JS文件的加載問題。
[0044]與傳統(tǒng)壓縮方法相比,本發(fā)明的技術(shù)方案提出的方案只壓縮頁面所需js,使js的內(nèi)容最小化。而且可以重用合并的js文件,最大限度的優(yōu)化頁面js的請求數(shù)量與流量大小。參見圖5。
[0045]為了實現(xiàn)上述目標,本發(fā)明的技術(shù)方案提出了一種智能的高可用性的WEB控件加載機制。本發(fā)明技術(shù)方案的實現(xiàn)過程如下:
步驟1:針對系統(tǒng)的應(yīng)用,將所需要引用的外部的js文件描述為一個對應(yīng)的配置文件。
[0046]步驟2:解析系統(tǒng)引用的外部文件的描述文件。
[0047]步驟3:解析一個頁面應(yīng)用頁面,分析出此頁面包含的js文件。
[0048]步驟4:根據(jù)步驟3解析出的js文件,根據(jù)所有js文件名計算出Hash值。
[0049]步驟5:根據(jù)步驟4計算的Hash值,從緩存中取值,檢查緩存中是否存在此Hash值的壓縮js文件。
[0050]步驟6:如果步驟5可以取出值,直接從緩存中取出壓縮js文件路徑,按照路徑加載此js壓縮文件;如果為空的話,將包含的所有js文件進行合并壓縮,跟將其根據(jù)Hash值存入緩存中。如果下一個應(yīng)用的頁面加載時包含的js文件相同,則可以直接使用此js壓縮文件。
[0051]為了更清晰的描述本方案的實現(xiàn),介紹我們的幾個概念:
WEB頁面:描述一個業(yè)務(wù)邏輯的整體過程,一個頁面由多個組成部分,主要包括布局和控件。
[0052]控件:頁面的基本組成部分,在應(yīng)用系統(tǒng)中,控件是一種具有圖形表示的對象,它可以顯示在屏幕上并與用戶實現(xiàn)交互。在我們的應(yīng)用中,每個控件對應(yīng)一個JS文件和對與此控件樣式的CSS文件描述。
[0053]布局:頁面的格局的整體配置,可以放置其它控件的容,在整個應(yīng)用系統(tǒng)中,每個布局對應(yīng)一個JS文件和對此布局樣式的CSS文件描述。
[0054]具體的流程如圖6所示。
[0055]系統(tǒng)中布局、控件方案加載體系:
在整個頁面的渲染過程中,首先需要解析每個布局跟控件對應(yīng)的js文件,在此基礎(chǔ)上方案才能正確實施。整個動態(tài)頁面的渲染機制的前提是每個布局和控件對應(yīng)一個JS、CSS文件,在此基礎(chǔ)上針對每個布局和控件實現(xiàn)一個描述文件,在頁面解析的過程中,根據(jù)描述文件按需加載頁面所包含布局和控件。參見圖7。
[0056]從圖3可以看出,系統(tǒng)本身的布局、控件都是通過xml文件進行描述的,同時,系統(tǒng)可以擴展自定義控件,同樣是通過xml描述。其中xml文件中會記錄布局與控件對應(yīng)的js文件。
[0057]控件的xml文件描述信息有如下部分組成。布局具有類似的描述。參見圖8。
[0058]加載JS具體過程: JS動態(tài)加載的具體實現(xiàn)過程如圖9和圖10所示。
[0059]對于一個應(yīng)用系統(tǒng)來說,包含相同布局與相同控件的頁面的情況是非常多見的,采用這樣的壓縮方式,可以最大限度的減少js文件的加載量及傳輸量,從而有效的提高頁面加載的速度。參見圖11。
[0060]圖11為采用本發(fā)明的技術(shù)方案提供的機制頁面加載時請求數(shù)據(jù),圖12是未使用本發(fā)明的技術(shù)方案機制直接加載js頁面的請求數(shù)據(jù),從兩個圖對比中可以看出,采用本發(fā)明的技術(shù)方案加載機制后可以有效減少請求數(shù)及加載量,加載時間有了顯著提升。參見圖13。
[0061]圖13是采用本發(fā)明的技術(shù)方案方案后,加載與圖11包含相同控件的頁面加載情況,從圖13中可以看出,請求時間與從未加載過某個控件組合時加載時間有了很大提升。
[0062]通過以上分析可以看出:與傳統(tǒng)壓縮方法相比,本發(fā)明的技術(shù)方案提出的方案只壓縮頁面所需js,使js的內(nèi)容最小化。而且可以重用合并的js文件,最大限度的優(yōu)化頁面js的請求數(shù)量與流量大小。
[0063]以上結(jié)合附圖詳細說明了本發(fā)明的技術(shù)方案,考慮到相關(guān)技術(shù)中沒有簡便的、統(tǒng)一的針對復(fù)雜類型元數(shù)據(jù)加載的解決辦法?,F(xiàn)有的控件加載無法完成有復(fù)雜類型參與的控件加載過程。因此,本發(fā)明提出了一種WEB控件加載裝置和一種WEB控件加載方法,可以在現(xiàn)有的控件加載方式基礎(chǔ)上,充分利用單對象類型完成多對象類型的控件加載,建立多對象類型參與的控件加載的通用、統(tǒng)一加載思路。
[0064]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種WEB控件加載裝置,其特征在于,包括: 文件描述單元,用于基于待應(yīng)用的系統(tǒng),將待應(yīng)用的外部js文件描述為一個對應(yīng)的配直文件; 文件解析及計算單元,用于基于描述的配置文件,進行解析、js文件分析和Hash值計算處理; 壓縮js文件檢查單元,用于根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮js文件; 壓縮js文件加載及應(yīng)用單元,用于基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。
2.根據(jù)權(quán)利要求1所述的WEB控件加載裝置,其特征在于,所述文件解析及計算單元,具體包括: 配置文件解析模塊,用于基于描述的配置文件,進行解析; js文件分析模塊,用于基于對配置文件的解析結(jié)果,解析相應(yīng)的頁面應(yīng)用頁面,分析得到該頁面應(yīng)用頁面包含的js文件; Hash值計算模塊,用于根據(jù)分析得到的js文件和所有js文件名,計算得到相應(yīng)的Hash 值。
3.根據(jù)權(quán)利要求1或2所述的WEB控件加載裝置,其特征在于,所述壓縮js文件加載及應(yīng)用單元,具體包括: 壓縮js文件加載模塊,用于根據(jù)計算得到的Hash值,如果從緩存中能夠取出值,則直接從緩存中取出壓縮js文件的路徑,按照該路徑加載該壓縮js文件。
4.根據(jù)權(quán)利要求3所述的WEB控件加載裝置,其特征在于,所述壓縮js文件加載及應(yīng)用單元,具體還包括: js文件及存儲模塊,用于根據(jù)計算得到的Hash值,如果從緩存中取值結(jié)果為空,則將該Hash值包含的所有js文件進行合并壓縮,并將合并壓縮得到的壓縮js文件根據(jù)相應(yīng)的Hash值存入緩存中。
5.根據(jù)權(quán)利要求4所述的WEB控件加載裝置,其特征在于,所述壓縮js文件加載及應(yīng)用單元,具體還包括: 壓縮js文件應(yīng)用模塊,用于根據(jù)計算得到的Hash值,如果從緩存中取出的壓縮js文件與下一個應(yīng)用的頁面加載時包含的js文件相同,則直接使用該壓縮js文件。
6.一種WEB控件加載方法,其特征在于,包括: 步驟202:基于待應(yīng)用的系統(tǒng),將待應(yīng)用的外部js文件描述為一個對應(yīng)的配置文件; 步驟204:基于描述的配置文件,進行解析、js文件分析和Hash值計算處理; 步驟206:根據(jù)計算處理得到的Hash值,從緩存中取值,檢查緩存中是否存在該Hash值的壓縮js文件; 步驟208:基于緩存中相應(yīng)Hash值的壓縮js文件的檢查結(jié)果,加載或合并壓縮并存儲或應(yīng)用壓縮js文件。
7.根據(jù)權(quán)利要求6所述的WEB控件加載方法,其特征在于,所述步驟204,具體包括: 步驟302:基于描述的配置文件,進行解析; 步驟304:基于對配置文件的解析結(jié)果,解析相應(yīng)的頁面應(yīng)用頁面,分析得到該頁面應(yīng)用頁面包含的js文件; 步驟306:根據(jù)分析得到的js文件和所有js文件名,計算得到相應(yīng)的Hash值。
8.根據(jù)權(quán)利要求6或7所述的WEB控件加載方法,其特征在于,所述步驟208,具體包括: 步驟402:根據(jù)計算得到的Hash值,如果從緩存中能夠取出值,則直接從緩存中取出壓縮js文件的路徑,按照該路徑加載該壓縮js文件。
9.根據(jù)權(quán)利要求8所述的WEB控件加載方法,其特征在于,所述步驟208,具體還包括: 步驟404:根據(jù)計算得到的Hash值,如果從緩存中取值結(jié)果為空,則將該Hash值包含的所有js文件進行合并壓縮,并將合并壓縮得到的壓縮js文件根據(jù)相應(yīng)的Hash值存入緩存中。
10.根據(jù)權(quán)利要求9所述的WEB控件加載方法,其特征在于,所述步驟208,具體還包括: 步驟406:根據(jù)計算得到的Hash值,如果從緩存中取出的壓縮js文件與下一個應(yīng)用的頁面加載時包含的js文件相同,則直接使用該壓縮js文件。
【文檔編號】G06F17/30GK104408178SQ201410773791
【公開日】2015年3月11日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】張曉燕 申請人:用友軟件股份有限公司