通用標(biāo)記語(yǔ)言的一個(gè)子集)等文本樣式的計(jì)算機(jī)語(yǔ)言。
[0032]CSS選擇器:和CSS規(guī)則是同一概念,它是通過(guò)解析CSS文件得到的。每個(gè)CSS選擇器可以對(duì)應(yīng)一個(gè)或多個(gè)超文本標(biāo)記語(yǔ)言文檔對(duì)象模型HTML DOM元素。
[0033]HTML DOM元素:比如頁(yè)面里的鏈接、圖片、文本框等,都是HTML DOM元素。
[0034]JS:英文全稱為JavaScript,它是在瀏覽器端執(zhí)行的腳本。
[0035]另外,本發(fā)明的應(yīng)用場(chǎng)景可以包括支付寶平臺(tái)的主要頁(yè)面,比如收銀臺(tái)和個(gè)人主頁(yè)等。
[0036]根據(jù)本發(fā)明的實(shí)施例,提供了一種冗余文件清理系統(tǒng),該冗余文件清理系統(tǒng)用于動(dòng)態(tài)的分析級(jí)聯(lián)樣式表里的規(guī)則是否存在冗余,并將冗余的級(jí)聯(lián)樣式表里的規(guī)則刪除。
[0037]圖1是根據(jù)本發(fā)明實(shí)施例的冗余文件清理系統(tǒng)的示意圖。
[0038]如圖1所示,該系統(tǒng)包括:客戶端和服務(wù)器。
[0039]客戶端可以用于獲取級(jí)聯(lián)樣式表文件,判斷級(jí)聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件,獲取不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件作為冗余文件。
[0040]在本發(fā)明實(shí)施例中,可以通過(guò)客戶端獲取級(jí)聯(lián)樣式表CSS文件,例如,可以通過(guò)瀏覽器獲取級(jí)聯(lián)樣式表CSS文件。
[0041 ] 具體地,瀏覽器可以通過(guò)執(zhí)行JS來(lái)獲取網(wǎng)頁(yè)的CSS文件,并且瀏覽器執(zhí)行不同的JS代碼可以獲取不同的網(wǎng)頁(yè)的CSS文件。級(jí)聯(lián)樣式表文件可以包括內(nèi)聯(lián)的、外聯(lián)的和動(dòng)態(tài)依賴的級(jí)聯(lián)樣式表文件。其中,動(dòng)態(tài)依賴的級(jí)聯(lián)樣式表文件是指CSS文件引用的其它CSS文件,例如,CSS文件I在引用CSS文件2時(shí),CSS文件2就是CSS文件I的動(dòng)態(tài)依賴的級(jí)聯(lián)樣式表文件。需要說(shuō)明的是,在有用戶訪問(wèn)時(shí),客戶端可以遞歸的獲取樣式文件列表,并通過(guò)樣式文件列表解析出所有的前述CSS文件。
[0042]具體地,在獲取級(jí)聯(lián)樣式表CSS文件之后,可以對(duì)其進(jìn)行解析,得到CSS選擇器,即CSS規(guī)則。判斷級(jí)聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件可以是CSS規(guī)則是否有用。如果CSS規(guī)則有用,則表明級(jí)聯(lián)樣式表文件滿足預(yù)設(shè)冗余匹配條件,從而級(jí)聯(lián)樣式表文件中的CSS規(guī)則為非冗余的代碼。如果CSS規(guī)則沒(méi)有用,則表明級(jí)聯(lián)樣式表文件不滿足預(yù)設(shè)冗余匹配條件,從而級(jí)聯(lián)樣式表文件中的CSS規(guī)則為冗余的代碼。
[0043]需要說(shuō)明的是,CSS規(guī)則是否有用可以通過(guò)CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素的匹配情況來(lái)判斷。如果CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素匹配,則表明CSS規(guī)則有用,如果CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素不匹配,則表明CSS規(guī)則沒(méi)有用。例如,CSS規(guī)則I與一個(gè)網(wǎng)頁(yè)中的圖片I匹配,則表明CSS規(guī)則有用,進(jìn)而表明CSS規(guī)則的代碼為非冗余的代碼。前述的網(wǎng)頁(yè)可以為多個(gè)網(wǎng)頁(yè)。
[0044]具體地,可以通過(guò)眾包的方式,在用戶訪問(wèn)網(wǎng)頁(yè)時(shí),動(dòng)態(tài)地分析CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素匹配情況。由于網(wǎng)站開發(fā)的頁(yè)面是給用戶使用的,因此用戶訪問(wèn)到的頁(yè)面會(huì)包含所有的HTML應(yīng)用場(chǎng)景,這樣,可以使得用于和CSS規(guī)則進(jìn)行匹配的HTML的覆蓋率達(dá)到100%,從而不會(huì)有遺漏。并且這種方式可以部署在所有頁(yè)面上,所以所有頁(yè)面的數(shù)據(jù)都可以通過(guò)用戶訪問(wèn)得到,從整站或這個(gè)應(yīng)用的角度,全面地進(jìn)行分析。并且在頁(yè)面中的JavaScript腳本執(zhí)行之后進(jìn)行分析,所有當(dāng)前用戶訪問(wèn)頁(yè)面的動(dòng)態(tài)的CSS規(guī)則和HTML也都被覆蓋。這樣,可以避免由于HTML覆蓋面不全面而導(dǎo)致有用的CSS規(guī)則被當(dāng)成冗余代碼刪掉,以及由此導(dǎo)致的部分用戶訪問(wèn)的頁(yè)面里的某些區(qū)塊不能正常顯示。
[0045]在本發(fā)明實(shí)施例中,每個(gè)客戶端可以獲取自身不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件,并將不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件作為冗余文件,這樣,可以得到多個(gè)客戶端的多個(gè)冗余文件。例如,客戶端可以包括客戶端A和客戶端B,其中,客戶端A可以得到冗余文件A,客戶端B可以得到冗余文件B,這樣,客戶端可以得到冗余文件A和冗余文件B。
[0046]優(yōu)選地,客戶端可以將冗余文件發(fā)送至服務(wù)器,由于冗余文件的數(shù)據(jù)較大,因此,可以通過(guò)推送的方式將冗余文件發(fā)送至服務(wù)器。
[0047]服務(wù)器可以用于確定客戶端獲取的冗余文件,并刪除冗余文件中的冗余代碼。
[0048]如果確定CSS規(guī)則為冗余文件,則可以將其刪除。具體地,在各個(gè)客戶端確定自身的CSS規(guī)則為冗余文件時(shí),可以提醒用戶(例如程序員)將相應(yīng)的客戶端的冗余文件刪除?;蛘叻?wù)器通過(guò)匯總所有客戶端確定的冗余文件,確定所有客戶端的冗余文件,并提醒用戶(例如程序員)將所有客戶端的冗余文件刪除。需要說(shuō)明的是,在服務(wù)器端可以通過(guò)執(zhí)行任意后端語(yǔ)言(比如Ruby, NodeJS, PHP, Java等)來(lái)實(shí)現(xiàn)。
[0049]優(yōu)選地,在本發(fā)明實(shí)施例中,客戶端可以為多個(gè)客戶端,每個(gè)客戶端可以用于分別獲取不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件,相應(yīng)的服務(wù)器可以用于確定多個(gè)客戶端獲取到的不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件中的級(jí)聯(lián)樣式表文件的交集,并將級(jí)聯(lián)樣式表文件的交集作為冗余文件。
[0050]這樣,可以避免對(duì)一個(gè)客戶端無(wú)用,而對(duì)其他的客戶端有用的級(jí)聯(lián)樣式表文件被誤刪除,進(jìn)而可以防止部分用戶訪問(wèn)的頁(yè)面里的某些區(qū)塊不能正常顯示。
[0051]具體地,服務(wù)器可以接收多個(gè)客戶端通過(guò)post的方式發(fā)送的各自不滿足預(yù)設(shè)冗余匹配條件的級(jí)聯(lián)樣式表文件的數(shù)據(jù)。需要說(shuō)明的是,服務(wù)器在接收到各個(gè)客戶端post的數(shù)據(jù)之后,一方面,可以存儲(chǔ)不匹配的CSS選擇器列表(即冗余的CSS選擇器列表)和與之對(duì)應(yīng)的CSS文件的URL路徑,其中,服務(wù)器可以以CSS文件的URL地址為key進(jìn)行存儲(chǔ);另一方面,可以對(duì)不匹配的CSS選擇器列表的數(shù)據(jù)進(jìn)行分析。例如,服務(wù)器可以從存儲(chǔ)器中取出不匹配的CSS選擇器列表的數(shù)據(jù),并按CSS文件的URL地址進(jìn)行歸類。其中,可以將屬于同一類別的CSS文件的URL下的規(guī)則做交集處理,分析得出最終的CSS冗余列表。
[0052]例如,可以通過(guò)以下方式得到級(jí)聯(lián)樣式表文件的交集:比如客戶端甲的數(shù)據(jù)可以是選擇器A和選擇器B,客戶端乙的數(shù)據(jù)可以是選擇器B和選擇器C,那么說(shuō)明用戶甲用到了選擇器C,而用戶乙用到了選擇器A。所以只有選擇器B是冗余的CSS規(guī)則。
[0053]通過(guò)本發(fā)明的上述實(shí)施例,采用眾包的方式,在用戶訪問(wèn)網(wǎng)站中的頁(yè)面時(shí),獲取所有HTML場(chǎng)景,并配合CSS規(guī)則進(jìn)行分析,然后通過(guò)服務(wù)器匯總所有數(shù)據(jù),分析得出準(zhǔn)確的CSS冗余規(guī)則列表,并將其刪除,解決了相關(guān)技術(shù)中靜態(tài)分析級(jí)聯(lián)樣式表里的規(guī)則導(dǎo)致分析不全面的問(wèn)題,達(dá)到了動(dòng)態(tài)而全面的分析級(jí)聯(lián)樣式表里的規(guī)則的效果。
[0054]根據(jù)本發(fā)明的實(shí)施例,提供了一種冗余文件清理裝置,該冗余文件清理裝置用于動(dòng)態(tài)的分析級(jí)聯(lián)樣式表里的規(guī)則是否存在冗余,并將冗余的級(jí)聯(lián)樣式表里的規(guī)則刪除。
[0055]圖2是根據(jù)本發(fā)明實(shí)施例的冗余文件清理裝置的示意圖。
[0056]如圖1所示,該裝置包括:第一獲取單元10、判斷單元20、第二獲取單元30和刪除單元40。
[0057]第一獲取單元10可以用于獲取級(jí)聯(lián)樣式表文件。
[0058]在本發(fā)明實(shí)施例中,可以通過(guò)客戶端獲取級(jí)聯(lián)樣式表CSS文件,例如,可以通過(guò)瀏覽器獲取級(jí)聯(lián)樣式表CSS文件。
[0059]具體地,瀏覽器可以通過(guò)執(zhí)行JS來(lái)獲取網(wǎng)頁(yè)的CSS文件,并且瀏覽器執(zhí)行不同的JS代碼可以獲取不同的網(wǎng)頁(yè)的CSS文件。級(jí)聯(lián)樣式表文件可以包括內(nèi)聯(lián)的、外聯(lián)的和動(dòng)態(tài)依賴的級(jí)聯(lián)樣式表文件。其中,動(dòng)態(tài)依賴的級(jí)聯(lián)樣式表文件是指CSS文件引用的其它CSS文件,例如,CSS文件I在引用CSS文件2時(shí),CSS文件2就是CSS文件I的動(dòng)態(tài)依賴的級(jí)聯(lián)樣式表文件。需要說(shuō)明的是,在有用戶訪問(wèn)時(shí),客戶端可以遞歸的獲取樣式文件列表,并通過(guò)樣式文件列表解析出所有的前述CSS文件。
[0060]判斷單元20可以用于判斷級(jí)聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件。
[0061]具體地,在獲取級(jí)聯(lián)樣式表CSS文件之后,可以對(duì)其進(jìn)行解析,得到CSS選擇器,即CSS規(guī)則。判斷級(jí)聯(lián)樣式表文件是否滿足預(yù)設(shè)冗余匹配條件可以是CSS規(guī)則是否有用。如果CSS規(guī)則有用,則表明級(jí)聯(lián)樣式表文件滿足預(yù)設(shè)冗余匹配條件,從而級(jí)聯(lián)樣式表文件中的CSS規(guī)則為非冗余的代碼。如果CSS規(guī)則沒(méi)有用,則表明級(jí)聯(lián)樣式表文件不滿足預(yù)設(shè)冗余匹配條件,從而級(jí)聯(lián)樣式表文件中的CSS規(guī)則為冗余的代碼。
[0062]需要說(shuō)明的是,CSS規(guī)則是否有用可以通過(guò)CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素的匹配情況來(lái)判斷。如果CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素匹配,則表明CSS規(guī)則有用,如果CSS規(guī)則與網(wǎng)頁(yè)的HTML DOM元素不匹配,則表明CSS規(guī)則沒(méi)有用。例如,CSS規(guī)則I與一個(gè)網(wǎng)頁(yè)中的圖片I匹配,則表明CSS規(guī)則有