冗余文件清理方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,具體而言,涉及一種冗余文件清理方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]通常人為書寫的級聯(lián)樣式表(Cascading Style Sheets,簡稱為CSS)都會存在冗余情況。并且級聯(lián)樣式表文件通常會隨著維護時間的增加而越來越冗余。
[0003]級聯(lián)樣式表里定義的規(guī)則是配合超文本標記語言文檔對象模型HTML DOM元素渲染用的。如果超文本標記語言HTML改變后使得某個文檔對象模型DOM元素沒有了,而級聯(lián)樣式表里的規(guī)則沒有刪除相應(yīng)的規(guī)則,則級聯(lián)樣式表里會出現(xiàn)沒用的級聯(lián)樣式表規(guī)則,即CSS冗余。冗余的CSS級聯(lián)樣式表規(guī)則被發(fā)布到線上,不僅不能發(fā)揮作用,反而提高了用戶下載文件的大小,并且增加了客戶端分析級聯(lián)樣式表規(guī)則和進行頁面渲染的壓力,降低了用戶體驗。而刪除冗余的CSS,能夠降低用戶瀏覽網(wǎng)頁時需要下載的文件的大小,提高客戶端渲染頁面的速度,提升用戶的體驗。
[0004]在相關(guān)技術(shù)中,為了刪除冗余的CSS,一般通過靜態(tài)地分析固定已知的HTML和CSS來確定冗余的CSS,并刪除之。然而,該方案存在以下問題:
[0005]1.雖然CSS文件是固定的,但對于動態(tài)的網(wǎng)站來說,HTML是動態(tài)渲染的,不同的用戶看到的頁面可能不同,對應(yīng)的HTML就會不同。這樣,找出所有場景下的HTML是一個問題。
[0006]2.一個CSS文件會被多個頁面引用,這樣,找出所有引用該CSS文件的頁面也是一個問題。
[0007]3.CSS可以動態(tài)地引入其他的CSS文件,也可以通過JavaScript動態(tài)地插入CSS文件;HTML也可以通過JavaScript動態(tài)地渲染得到。有這么多的動態(tài)性,僅僅進行靜態(tài)分析是不全面的。
[0008]針對相關(guān)技術(shù)中靜態(tài)分析級聯(lián)樣式表里的規(guī)則導致分析不全面的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的主要目的在于提供一種冗余文件清理方法、裝置和系統(tǒng),以解決相關(guān)技術(shù)中靜態(tài)分析級聯(lián)樣式表里的規(guī)則導致分析不全面的問題。
[0010]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種冗余文件清理方法。該方法包括:獲取級聯(lián)樣式表文件;判斷級聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件;獲取不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件作為冗余文件;以及刪除冗余文件中的冗余代碼。
[0011]進一步地,采用以下方式獲取級聯(lián)樣式表文件:檢測目標網(wǎng)頁的訪問狀態(tài);根據(jù)目標網(wǎng)頁的訪問狀態(tài)判斷目標網(wǎng)頁是否被訪問;如果判斷出目標網(wǎng)頁被訪問,則獲取目標網(wǎng)頁的樣式文件列表;以及從樣式文件列表中解析出級聯(lián)樣式表文件。
[0012]進一步地,通過以下方式從樣式文件列表中解析出級聯(lián)樣式表文件:從樣式文件列表中解析出內(nèi)聯(lián)的級聯(lián)樣式表文件;從樣式文件列表中解析出外聯(lián)的級聯(lián)樣式表文件;以及從樣式文件列表中解析出動態(tài)依賴的級聯(lián)樣式表文件。
[0013]進一步地,通過以下方式判斷級聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件:從級聯(lián)樣式表文件中解析出級聯(lián)樣式表選擇器列表;以及將級聯(lián)樣式表選擇器列表與預(yù)設(shè)網(wǎng)頁的HTML DOM元素進行匹配,其中,如果級聯(lián)樣式表選擇器列表與預(yù)設(shè)網(wǎng)頁的HTML DOM元素匹配,則確定級聯(lián)樣式表選擇器列表對應(yīng)的級聯(lián)樣式表文件滿足預(yù)設(shè)冗余匹配條件,如果級聯(lián)樣式表選擇器列表與預(yù)設(shè)網(wǎng)頁的HTML DOM元素不匹配,則確定級聯(lián)樣式表選擇器列表對應(yīng)的級聯(lián)樣式表文件不滿足預(yù)設(shè)冗余匹配條件。
[0014]進一步地,獲取不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件作為冗余文件包括:獲取多個客戶端獲取到的不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件;確定多個客戶端獲取到的不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件中的級聯(lián)樣式表文件的交集;以及將級聯(lián)樣式表文件的交集作為冗余文件。
[0015]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種冗余文件清理裝置。該裝置包括:第一獲取單元,用于獲取級聯(lián)樣式表文件;判斷單元,用于判斷級聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件;第二獲取單元,用于獲取不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件作為冗余文件;以及刪除單元,用于刪除冗余文件中的冗余代碼。
[0016]進一步地,第一獲取單元包括:檢測模塊,用于檢測目標網(wǎng)頁的訪問狀態(tài);判斷模塊,用于根據(jù)目標網(wǎng)頁的訪問狀態(tài)判斷目標網(wǎng)頁是否被訪問;第一獲取模塊,用于如果判斷出目標網(wǎng)頁被訪問,則獲取目標網(wǎng)頁的樣式文件列表;以及第一解析模塊,用于從樣式文件列表中解析出級聯(lián)樣式表文件。
[0017]進一步地,第一解析模塊還用于從樣式文件列表中解析出內(nèi)聯(lián)的級聯(lián)樣式表文件;第一解析模塊還用于從樣式文件列表中解析出外聯(lián)的級聯(lián)樣式表文件;以及第一解析模塊還用于從樣式文件列表中解析出動態(tài)依賴的SS文件。
[0018]進一步地,判斷單元包括:第二解析模塊,用于從級聯(lián)樣式表文件中解析出級聯(lián)樣式表選擇器列表;以及匹配模塊,用于將級聯(lián)樣式表選擇器列表與預(yù)設(shè)網(wǎng)頁的HTML DOM元素進行匹配,其中,如果級聯(lián)樣式表選擇器列表與預(yù)設(shè)網(wǎng)頁的HTML DOM元素匹配,則確定級聯(lián)樣式表選擇器列表對應(yīng)的級聯(lián)樣式表文件滿足預(yù)設(shè)冗余匹配條件,如果級聯(lián)樣式表選擇器列表與預(yù)設(shè)網(wǎng)頁的HTML DOM元素不匹配,則確定級聯(lián)樣式表選擇器列表對應(yīng)的級聯(lián)樣式表文件不滿足預(yù)設(shè)冗余匹配條件。
[0019]進一步地,第二獲取單元包括:第二獲取模塊,用于獲取多個客戶端獲取到的不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件;第一確定模塊,用于確定多個客戶端獲取到的不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件中的級聯(lián)樣式表文件的交集;以及第二確定模塊,用于將級聯(lián)樣式表文件的交集作為冗余文件。
[0020]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的再一方面,提供了一種冗余文件清理系統(tǒng)。該冗余文件清理系統(tǒng)包括:客戶端,用于獲取級聯(lián)樣式表文件,判斷級聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件,獲取不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件作為冗余文件;以及服務(wù)器,用于確定客戶端獲取的冗余文件,并刪除幾余文件。
[0021]進一步地,客戶端為多個客戶端,客戶端用于分別獲取不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件,服務(wù)器用于確定多個客戶端獲取到的不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件中的級聯(lián)樣式表文件的交集,并將級聯(lián)樣式表文件的交集作為冗余文件。
[0022]通過本發(fā)明,采用獲取級聯(lián)樣式表文件;判斷級聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件;獲取不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級聯(lián)樣式表文件作為冗余文件;以及刪除冗余文件中的冗余代碼,解決了相關(guān)技術(shù)中靜態(tài)分析級聯(lián)樣式表里的規(guī)則導致分析不全面的問題,進而達到了動態(tài)而全面的分析級聯(lián)樣式表里的規(guī)則的效果。
【附圖說明】
[0023]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
[0024]圖1是根據(jù)本發(fā)明實施例的冗余文件清理系統(tǒng)的示意圖;
[0025]圖2是根據(jù)本發(fā)明實施例的冗余文件清理裝置的示意圖;以及
[0026]圖3是根據(jù)本發(fā)明實施例的冗余文件清理方法的流程圖。
【具體實施方式】
[0027]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。
[0028]為了使本領(lǐng)域的技術(shù)人員更好的理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,在本領(lǐng)域普通技術(shù)人員沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本發(fā)明的保護范圍。
[0029]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含。
[0030]需要說明的是,在詳細闡述本發(fā)明實施例之前,先將以下名詞解釋如下:
[0031]CSS:英文全稱為Cascading Style Sheets,中文全稱為級聯(lián)樣式表。級聯(lián)樣式表是用來表現(xiàn)HTML (標準通用標記語言的一個應(yīng)用)或者XML (標準