TW201617940A - 資料壓縮方法和裝置 - Google Patents
資料壓縮方法和裝置 Download PDFInfo
- Publication number
- TW201617940A TW201617940A TW104114574A TW104114574A TW201617940A TW 201617940 A TW201617940 A TW 201617940A TW 104114574 A TW104114574 A TW 104114574A TW 104114574 A TW104114574 A TW 104114574A TW 201617940 A TW201617940 A TW 201617940A
- Authority
- TW
- Taiwan
- Prior art keywords
- selector
- same
- css
- merged
- merge
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/146—Coding or compression of tree-structured data
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/707—Structured documents, e.g. XML
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申請實施例提供了一種資料壓縮方法和一種資料壓縮裝置。該資料壓縮方法,包括:確定階層式樣式表CSS檔中的合併參量,所述合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷所述合併參量是否滿足合併條件;當所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。本申請實施例通過對CSS檔中的合併參量在滿足合併條件下進行合併,從而在保證安全壓縮的基礎上,提高了壓縮比,更有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
Description
本申請關於資料處理技術領域,特別是關於一種資料壓縮方法和一種資料壓縮裝置。
階層式樣式表(Cascading Style Sheets,CSS)用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等檔樣式。CSS檔在網路瀏覽器中以表現樣式而存在,它定義了網頁展現的規則,是一種文本格式。CSS能夠真正做到網頁表現與內容分離,相對於傳統HTML的表現而言,它能夠對網頁中物件的位置排版進行圖元級的精確控制,支援幾乎所有的字體字型大小樣式,擁有對網頁物件和模型樣式編輯的能力,並能夠進行初步交互設計,是目前基於文本展示最優秀的表現設計語言。基於上述優勢,CSS得到了廣泛應用。
為了使CSS檔擁有更小的體積以在網路傳輸時更加快速,通常會對CSS檔進行壓縮。目前,可以採用YUICompress、clean-css等壓縮方法進行壓縮,這些壓縮方法通過去除CSS檔中的空白、注釋字元、無效字元等
來縮短其長度。然而,這些壓縮方法無法去除CSS檔中大量的冗餘碼,對CSS檔的壓縮非常有限,仍然會存在白白浪費頻寬,影響網路傳送速率的問題。
本申請實施例所要解決的技術問題是提供一種資料壓縮方法,能夠更有效的縮短CSS檔的長度,節省其佔用的頻寬。
相應的,本申請實施例還提供了一種資料壓縮裝置,用以保證上述方法的實現及應用。
為了解決上述問題,本申請公開了一種資料壓縮方法,包括:確定階層式樣式表CSS檔中的合併參量,所述合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷所述合併參量是否滿足合併條件;當所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
進一步,當所述合併參量為相同的選擇器時,所述判斷所述合併參量是否滿足合併條件,包括:判斷第一選擇器與第二選擇器是否緊鄰;其中,所述第一選擇器與所述第二選擇器是在所述CSS檔中先後排列的相同的選擇器;若是,則滿足合併條件;若否,則判斷中間選擇器與
所述第二選擇器和所述第三選擇器中是否包含相同的樣式名;其中,所述中間選擇器是位於所述第一選擇器與所述第二選擇器之間的選擇器;若否,則滿足合併條件;若是,則判斷所述中間選擇器與所述第一選擇器或所述第二選擇器所包含的相同的樣式名的值是否相同;若是,則滿足合併條件;若否,則判斷所述中間選擇器與所述第一選擇器或所述第二選擇器相比,所包含的相同樣式名的值是否具有不同的優先順序;若是,則滿足合併條件。
進一步,所述當所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔,包括:當所述合併參量滿足合併條件時,將所述相同選擇器中的樣式合併至同一選擇器中。
進一步,當所述合併參量為同一選擇器中相同的樣式名時,所述判斷所述合併參量是否滿足合併條件,包括:判斷所述同一選擇器中相同的樣式名的值是否相同;若是,則滿足合併條件;若否,則判斷所述同一選擇器中相同的樣式名之間是否存在覆蓋與被覆蓋關係;若否,則滿足合併條件;若是,則當所述相同樣式名中後者覆蓋前者時,判斷所述前者的樣式名的值是否具有更高的優先順序,若否,則滿足合併條件;當所述相同樣式名中前者覆蓋後者時,判斷所述前者的樣式名的值是否
具有更高的優先順序,若是,則滿足合併條件。
進一步,所述當所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔,包括:當所述合併參量滿足合併條件時,若所述相同樣式名的值之間具有相同的優先順序,則由後者覆蓋前者,獲得CSS壓縮檔;若所述相同的樣式名的值之間具有不同的優先順序,則由優先順序高者覆蓋優先順序低者,獲得CSS壓縮檔。
進一步,當所述合併參量為不同選擇器中的相同樣式時,在所述將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔之前,還包括:預測將所述CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度;若是,再將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
進一步,所述預測將所述CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度,包括:透過比較包含所述相同樣式的選擇器的名稱長度與所述相同樣式的長度,確定將所述CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度,其中,所述包含所述相同樣式的選擇器中還包含不同樣式。
進一步,所述將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔,包括:提取所述CSS檔中各選擇器的相同樣式作為公因數;將包含所述相同樣式的選擇器作為所述公因數的共同選擇器進行合併,獲得CSS壓縮檔。
進一步,所述將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔,還包括:比較所獲得的所有CSS壓縮檔的長度;其中,在所述CSS檔中提取不同的公因數對應獲得不同的CSS壓縮檔;選擇長度最短的CSS壓縮檔作為最終的CSS壓縮檔。
進一步,所述提取所述CSS檔中各選擇器的相同樣式作為公因數,包括:對所述各選擇器中的樣式進行排序;按照具有相同樣式的選擇器的數量,由大到小依次提取所述各選擇器的相同樣式作為公因數。
進一步,所述判斷所述合併參量是否滿足合併條件,包括:判斷第三選擇器與第四選擇器是否緊鄰,其中所述第三選擇器與所述第四選擇器是在所述CSS檔中先後排列的具有相同樣式的選擇器;若是,則滿足合併條件;若否,則判斷間隔選擇器中
是否包含所述第三選擇器和所述第四選擇器的所述相同樣式的樣式名,所述間隔選擇器是位於所述第三選擇器與所述第四選擇器之間的選擇器;若否,則滿足合併條件;若是,則判斷所述間隔選擇器與所述第三選擇器或所述第四選擇器相比,所包含的所述相同樣式的樣式名的值是否具有不同的優先順序;若是,則滿足合併條件。
本申請還公開了一種資料壓縮裝置,包括:參量確定單元,被配置為確定階層式樣式表CSS檔中的合併參量,所述合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷單元,被配置為判斷所述合併參量是否滿足合併條件;合併單元,被配置為當所述判斷單元判斷所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
與現有技術相比,本申請實施例包括以下優點:本申請實施例通過對CSS檔中的合併參量在滿足合併條件下進行合併,從而在保證安全壓縮的基礎上,提高了壓縮比,更有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
1001‧‧‧參量確定單元
1002‧‧‧判斷單元
1003‧‧‧合併單元
圖1是本申請的一種資料壓縮方法實施例的步驟流程圖;圖2是本申請的另一種資料壓縮方法實施例的步驟流程圖;圖3是本申請圖2所示實施例中判斷相同的選擇器是否滿足合併條件的步驟流程圖;圖4是本申請的另一種資料壓縮方法實施例的步驟流程圖;圖5是本申請圖4所示實施例中判斷同一選擇器中相同樣式名是否滿足合併條件的步驟流程圖;圖6是本申請的另一種資料壓縮方法實施例的步驟流程圖;圖7是本申請圖4所示實施例中判斷各選擇器中的相同樣式是否滿足合併條件的步驟流程圖;圖8是本申請圖4所示實施例中將CSS檔中的合併參量進行合併,獲得CSS壓縮檔的步驟流程圖;圖9是本申請圖8所示實施例中提取CSS檔中各選擇器的相同樣式作為公因數的步驟流程圖;圖10是本申請一種資料壓縮裝置實施例的結構框圖。
為使本申請的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本申請作進一步詳細
的說明。
參照圖1,示出了本申請的一種資料壓縮方法實施例的步驟流程圖,具體可以包括如下步驟:步驟101,確定CSS檔中的合併參量,該合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種。
首先,該CSS檔可以是原始的未經過任何壓縮處理的CSS檔,也可以是已經通過現有壓縮方式,例如YUICompress、clean-css等壓縮處理後的CSS檔,該CSS檔中的空白、注釋字元、無效字元等可以已經去除。
本步驟中需要確定出CSS檔中可以進行合併的合併參量。該合併參量為CSS檔中重複出現的內容,具體可以是CSS檔中相同的選擇器,也可以是同一選擇器中相同的樣式名,還可以是相同的樣式,該相同的樣式是指樣式名及樣式名的值均相同,當然還可以是同時具有上述合併參量中的兩種或三種,下面分別舉例說明。
例如:.a{margin:0}.b{padding:0}.a{padding:0}中包含相同的選擇器a,在其它實例中相同的選擇器可能有多個;.a{margin:0;margin:1px}中在同一選擇器a中包含相同的樣式名margin,在其它實例中同一選擇器可能包含有多個相同的樣式名;.a{margin:0;padding:0}.b{margin:0;padding:1}中包含相同的樣式margin:0,在其它實例中可能存在多個選擇器包含有相同的樣式。再如a{margin:0;padding:0;color:#FFF;padding:1}.b{margin:0;
padding:1}.a{margin:0;padding:1;color:#FFF}中包含相同的選擇器a,同一選擇器a中包含相同的樣式名padding,且選擇器a、b中包含相同的樣式margin:0;padding:1。
當確定出CSS檔中包含的合併參量時,執行步驟102。
步驟102,判斷合併參量是否滿足合併條件。
該合併條件用於判斷對合併參量進行合併是否安全,也即合併後獲得的CSS壓縮檔所展現的樣式與合併前是否一致,如果一致則滿足合併條件,合併安全,可以執行步驟103,如果不一致則不滿足合併條件,合併不安全,此時放棄合併操作。其中,不同的合併參量對應的合併條件可能不同,具體請參見後續實施例的描述。
步驟103,將CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
將CSS檔中的合併參量進行合併具體可以是合併相同選擇器中的樣式,也可以是對同一選擇器中相同樣式名的值進行覆蓋或刪除,還可以是提取各選擇器中相同的樣式作為公因數,當合併參量有多種時,可以按照一定的順序進行多次合併,例如先合併相同的選擇器,然後合併同一選擇器中相同的樣式名,最後再合併各選擇器中相同的樣式等。總之,將CSS檔中重複出現的內容在滿足合併條件的前提下盡可能合併以避免重複,從而可以去除冗餘的CSS代碼,達到壓縮CSS檔的效果。
上述步驟也可以迴圈執行,直至獲得最小的CSS壓
縮檔。
本申請實施例通過對CSS檔中的合併參量在滿足合併條件下進行合併,從而在保證安全壓縮的基礎上,提高了壓縮比,更有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
參照圖2,示出了本申請的另一種資料壓縮方法實施例的步驟流程圖,具體可以包括如下步驟:步驟201,確定CSS檔中的合併參量為相同的選擇器。
例如,CSS檔中包含.a{margin:0}.a{padding:0},則合併參量為相同的選擇器a。再如CSS檔中包含.a{margin:0}.b{padding:1px}.a{padding:0},合併參量也為相同的選擇器a。
步驟202,判斷該相同的選擇器是否滿足合併條件。
如圖3所示,該判斷相同的選擇器是否滿足合併條件的過程可以包括:步驟301,判斷第一選擇器與第二選擇器是否緊鄰。
其中,第一選擇器與第二選擇器是在CSS檔中先後排列的相同的選擇器,其中,“第一”、“第二”僅為區分前後兩具有相同樣式的選擇器,並非特指或限定。例如上例中依次出現的選擇器a。在.a{margin:0}.a{padding:0}中,兩相同的選擇器a緊鄰,中間沒有插入其他選擇器。在.a{margin:0}.b{padding:1px}.a{padding:0}中,相同的選擇器a不緊鄰,其中插入了中間選擇器b,此處將位於兩
相同選擇器之間的選擇器,也即位於上述第一選擇器和第二選擇器之間的選擇器,記為中間選擇器。
當第一選擇器與第二選擇器緊鄰時,滿足合併條件;若不緊鄰,則執行步驟302。
也即上述.a{margin:0}.a{padding:0}滿足合併條件,而對於.a{margin:0}.b{padding:1px}.a{padding:0}則繼續執行步驟302。
步驟302,判斷中間選擇器與第二選擇器和第三選擇器中是否包含相同的樣式名。
若中間選擇器中包含的樣式名與第一選擇器和第二選擇器中包含的樣式名均不同,則第一選擇器與第二選擇器的合併不會影響到中間選擇器的樣式,此時滿足合併條件;若中間選擇器與第一選擇器包含相同的樣式名,但是與第二選擇器不包含相同的樣式名,則說明將第二選擇器合併至第一選擇器時不會影響到中間選擇器的樣式,若中間選擇器與第二選擇器包含相同的樣式名,而與第一選擇器不包含相同的樣式名,則說明將第一選擇器合併至第二選擇器時也不會影響到中間選擇器的樣式,這兩種情況下也顯然是滿足合併條件的。
例如.a{margin:0}.b{padding:1px}.a{padding:0},第二選擇器a和中間選擇器b中均包含樣式名padding,但是中間選擇器b中不包含第一選擇器a的樣式名margin,則第一選擇器可以合併至第二選擇器中,滿足合併條件。
若中間選擇器與第一選擇器和第二選擇器中均包含相
同的樣式名,則繼續執行步驟303。
步驟303,判斷中間選擇器與第一選擇器或第二選擇器所包含的相同的樣式名的值是否相同。
若中間選擇器與第一選擇器或第二選擇器所包含的相同樣式名的值是相同的,則第一選擇器與第二選擇器的合併同樣不會影響到中間選擇器,例如.a{margin:0;padding;1}.b{padding:0}.a{padding:0}由於選擇器b和第二選擇器的樣式名padding的值相等,合併前後最終展現的樣式結果一致,因此滿足合併條件;若中間選擇器與第一選擇器及第二選擇器所包含的相同樣式名的值均不同,則進一步執行步驟304。
對於.a{margin:0;padding:1}.b{padding:1px}.a{padding:0},第一選擇器、第二選擇器和中間選擇器中均包含樣式名padding,但樣式名的值分別為1,1px,0,顯然不同,此時進一步執行步驟304。
步驟304,判斷中間選擇器與第一選擇器或第二選擇器相比,所包含的相同樣式名的值是否具有不同的優先順序。
若中間選擇器與第一選擇器和第二選擇器所包含的相同樣式名的值是不同的,則只要中間選擇器中與第一選擇器和第二選擇器中的任一個相比,相同樣式名的值具有不同的優先順序,則第一選擇器與第二選擇器的合併都不會影響到中間選擇器,此時滿足合併條件;若三個選擇器中相同樣式名的值均沒有優先順序或優先順序相同,則不滿
足合併條件,也就不能合併。
對於.a{margin:0;padding:1}.b{padding:1px}.a{padding:0},三個選擇器中相同樣式名padding的值均不同,且優先順序相同,合併後會改變原CSS檔表現的樣式,因此不滿足合併條件,第一選擇器與第二選擇器不能合併。
而對於.a{margin:0;padding:1}.b{padding:1px !important}.a{padding:0},或.a{margin:0;padding:1}.b{padding:1px}.a{padding:0 !important},或.a{margin:0;padding:1 !important}.b{padding:1px}.a{padding:0},由於中間選擇器b中padding的值的優先順序要麼第一選擇器a的不同,要麼與第二選擇器a的不同,因此第一選擇器和第二選擇器均可以合併,此時滿足合併條件。
在經過上述判斷步驟後,若滿足合併條件,則執行步驟203,若不滿足,則不執行合併操作。
步驟203,將相同的選擇器進行合併,獲得CSS壓縮檔。
該將相同的選擇器進行合併的過程即將相同選擇器中的樣式合併至一個選擇器中。
其中,若上述步驟302中,中間選擇器與第一選擇器包含相同的樣式名,但是與第二選擇器不包含相同的樣式名,則將第二選擇器中的樣式向前合併至第一選擇器,若中間選擇器與第二選擇器包含相同的樣式名,而與第一選擇器不包含相同的樣式名,則將第一選擇器中的樣式向後合併至第二選擇器。對於上述步驟304中,若中間選擇器
與第一選擇器或第二選擇器相比,所包含的相同樣式名的值具有不同的優先順序,則,既可以將第一選擇器中的樣式向後合併至第二選擇器中也可以將第二選擇器中的樣式向前合併至第一選擇器中。
合併之後即可獲得CSS壓縮檔,顯然CSS壓縮檔的長度要小於合併前的CSS檔。
本實施例通過對相同的選擇器進行合併,有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
在另一實施例中,若相同的選擇器進行合併後,在同一選擇器中包含有相同的樣式或相同的樣式名,則可以繼續以該相同的樣式或樣式名作為合併參量,迴圈執行步驟101~103或後續實施例中的步驟401~403對CSS檔進行壓縮。
參照圖4,示出了本申請的另一種資料壓縮方法實施例的步驟流程圖,具體可以包括如下步驟:步驟401,確定CSS檔中的合併參量為同一選擇器中相同的樣式名。
在經過其它合併操作,例如合併相同的選擇器之後,或者由於誤寫等情況,可能會在CSS檔中在同一個選擇器包含有相同的樣式名,此時可確定該CSS檔中的合併參量為該相同的樣式名。該相同樣式名的值可能相同也可能不同。
例如:.a{margin:0;margin:1px},選擇器a中包含相
同的樣式名margin。
步驟402,判斷同一選擇器中相同樣式名是否滿足合併條件。
如圖5所示,該判斷同一選擇器中相同樣式名是否滿足合併條件的過程可以包括:步驟501,判斷同一選擇器中相同的樣式名的值是否相同。
若相同,則實際為重複樣式,滿足合併條件。若不同,則執行步驟502。
步驟502,判斷同一選擇器中相同的樣式名之間是否存在覆蓋與被覆蓋關係。
CSS檔中可能出現縮寫的樣式名,例如樣式名background是一種縮寫,其實際的樣式名包括了background-color、background-image、background-repeat等等。
本實施例中,若CSS檔中同時包含縮寫和非縮寫的樣式名,例如:.a{background-color:#FFF;background:#000 ur1(xxx.jpg)},此時認為background-color與background兩樣式名相同,只是存在覆蓋與被覆蓋的關係,即樣式名background覆蓋樣式名background-color。
若相同的樣式名之間不存在覆蓋與被覆蓋關係,則滿足合併條件,可以直接合併,若存在覆蓋與被覆蓋關係,則執行步驟503~504。
步驟503,當相同樣式名中後者覆蓋前者時,判斷前
者的樣式名的值是否具有更高的優先順序。
對於相同樣式名中後者覆蓋前者的情況,例如:.a{background-color:#FFF;background:#000 ur1(xxx.jpg)}
可以進一步判斷前者的樣式名的值是否具有更高的優先順序,若否,則滿足合併條件。若是,則前者的樣式名的值不能被覆蓋,也就不滿足合併條件。例如:.a{background-color:#FFF!important;background:#000 ur1(xxx.jpg)}。
步驟504,當相同樣式名中前者覆蓋後者時,判斷前者的樣式名的值是否具有更高的優先順序。
對於相同樣式名中前者覆蓋後者的情況,例如:.a{background:#000 ur1(xxx.jpg);background-color:#FFF}
可以進一步判斷前者的樣式名的值是否具有更高的優先順序,若是,則滿足合併條件。若否,則前者的樣式名的值不能被覆蓋,也就不滿足合併條件。
在經過上述判斷步驟後,若滿足合併條件,則執行步驟403進行合併,若不滿足,則不執行合併操作。
步驟403,若相同樣式名的值之間具有相同的優先順序,則由後者覆蓋前者,獲得CSS壓縮檔;若相同的樣式名的值之間具有不同的優先順序,則由優先順序高者覆蓋優先順序低者,獲得CSS壓縮檔。
對於同一選擇器中相同的樣式(樣式名及其值均相同),均滿足合併條件,無論是否有優先順序,可直接保留一個刪除其它相同樣式。
對於同一選擇器中相同的樣式名,當不存在覆蓋於被覆蓋的關係時也即不存在縮寫的樣式名時,均滿足合併條件,如果相同樣式名的值之間的優先順序相同,則可以直接由後者覆蓋前者,例如a{margin:0;margin:1px},可以直接合併為.a{margin:1px}。如果相同樣式名的值之間具有不同的優先順序,可以由優先順序高者覆蓋優先順序低者,例如.a{margin:0 !important;margin:1px},合併之後為.a{margin:0 !important},或者.a{margin:0;margin:1px !important},合併之後為.a{margin:1px !important}。
對於同一選擇器中相同的樣式名,當存在覆蓋於被覆蓋的關係時,若相同樣式名中後者覆蓋前者,且前者與後者相比樣式名的值具有相同的優先順序或後者具有較高的優先順序,則滿足合併條件,此時由後者覆蓋前者進行合併,例如:.a{background-color:#FFF;background:#000 ur1(xxx.jpg)}合併為.a{background:#000 ur1(xxx.jpg)}。
對於同一選擇器中相同的樣式名,當存在覆蓋於被覆蓋的關係時,若相同樣式名中前者覆蓋後者,且前者與後者相比樣式名的值具有更高的優先順序,則滿足合併條件,此時由優先順序高的前者覆蓋優先順序低的後者進行合併,例如:.a{background:#000 ur1(xxx.jpg)!important;background-color:#FFF}合併為.a{background:#000 ur1(xxx.jpg)!important}。
本實施例通過對同一選擇器中相同的樣式名進行合併,有效的縮短了CSS檔的長度,節省了其佔用的頻
寬,更利於網路傳輸。
在另一實施例中,若同一選擇器內的相同樣式名進行合併後,不同選擇器之間還包含有相同的樣式,則可以繼續以該相同的樣式作為合併參量,迴圈執行步驟101~103或後續實施例中的步驟601~604對CSS檔進行壓縮。
參照圖6,示出了本申請的另一種資料壓縮方法實施例的步驟流程圖,具體可以包括如下步驟:步驟601,確定CSS檔中的合併參量為不同選擇器中的相同樣式。
其中,相同的樣式指樣式名及樣式名的值均相同,本實施例中所指的相同樣式是指不同選擇器中的相同樣式,對於同一選擇器的相同樣式可以按照前述步驟401~403執行。
例如,CSS檔.a{margin:0;color:#000}.b{margin:0;color:#000}中,選擇器a、b包含相同的樣式margin:0及color:#000。
再例如,在另一CSS檔.a{margin:0;padding:0}.b{margin:0;padding:1}中,選擇器a、b包含相同的樣式margin:0。
選擇器中所包含的相同樣式可能是某一個或某幾個選擇器中全部的或部分的樣式,此處不做限定。
步驟602,判斷各選擇器中的相同樣式是否滿足合併條件。
如圖7所示,該判斷各選擇器中的相同樣式是否滿足合併條件的過程可以包括:
步驟701,判斷第三選擇器與第四選擇器是否緊鄰。
其中,第三選擇器與第四選擇器是在CSS檔中先後排列的選擇器,第三選擇器和第四選擇器中具有相同的樣式。“第三”、“第四”僅為區分前後兩具有相同樣式的選擇器,並非特指或限定。
例如:.a{margin:0;padding:0}.b{margin:0;padding:1}中選擇器a、b具有相同的樣式margin:0,且選擇器a、b緊鄰,中間沒有插入其他的選擇器。再例如:.a{margin:0;padding:0}.b{margin:1;padding:1}c{margin:0}中,選擇器a、c具有相同的樣式margin:0,但是選擇器a、c不緊鄰,其中插入了間隔選擇器b,此處將位於具有相同樣式的兩選擇器之間的選擇器,也即位於上述第三選擇器和第四選擇器之間的選擇器記為間隔選擇器。
當上述第三選擇器和第四選擇器緊鄰時滿足合併條件,可以進行合併;當不緊鄰時,則執行步驟702。
也即上述.a{margin:0;padding:0}.b{margin:0;padding:1}中選擇器a、b之間的相同樣式margin:0滿足合併條件,可以合併,但是,.a{margin:0;padding:0}.b{margin:1;padding:1}c{margin:0}中選擇器a、c之間雖具有相同樣式margin:0,但a、c不緊鄰,需要進一步執行步驟702。
步驟702,判斷間隔選擇器中是否包含第三選擇器和第四選擇器中的相同樣式的樣式名。
若間隔選擇器中不包含第三選擇器和第四選擇器中的相同樣式的樣式名,例如.a{margin:0;padding:0}.b
{padding:1}.c{margin:0}中,第三選擇器a和第四選擇器c中包含相同的樣式margin:0,而間隔選擇器b中不包含樣式名margin,此時滿足合併條件。
若間隔選擇器中包含了第三選擇器和第四選擇器中的相同樣式的樣式名,例如.a{margin:0;padding:0}.b{margin:1;padding:1}c{margin:0},間隔選擇器中包含了樣式名margin,則繼續執行步驟703。
步驟703,判斷間隔選擇器與第三選擇器或第四選擇器相比,所包含的相同的樣式名的值是否具有不同的優先順序。
只要間隔選擇器中與第三選擇器和第四選擇器中的任一個相比,相同樣式名的值具有不同的優先順序,則第三選擇器與第四選擇器的合併都不會影響到間隔選擇器,此時滿足合併條件;若三個選擇器中相同樣式名的值均沒有優先順序或優先順序相同,則不滿足合併條件,也就不能合併。本步驟中的相同的樣式名是指第三選擇器與第四選擇器中的相同樣式的樣式名。
例如:.a{margin:0;padding:0}.b{margin:1;padding:1}c{margin:0}中,間隔選擇器b包含的margin:1與選擇器a、c中的相同樣式margin:0具有相同的優先順序,此時不能對選擇器a、c中的相同樣式margin:0進行合併,否則表現樣式會與原CSS檔的表現樣式不一致。
若間隔選擇器b包含的margin:1具有較高優先順序,例如a{margin:0;padding:0}.b{margin:1!important;padding:1}
c{margin:0},則此時選擇器a、c中的相同樣式margin:0滿足合併條件,可以進行合併。
若第三選擇器a中的樣式margin:0具有較高的優先順序,如.a{margin:0 !important;padding:0}.b{margin:1;padding:1}c{margin:0},此時選擇器a、c中的相同樣式margin:0滿足合併條件,可以進行合併。
若第四選擇器c中的樣式margin:0具有較高的優先順序,如.a{margin:0;padding:0}.b{margin:1;padding:1}c{margin:0 !important},此時選擇器a、c中的相同樣式margin:0滿足合併條件,可以進行合併。
在經過上述判斷步驟後,若不滿足合併條件,則不執行合併操作;若滿足合併條件,則可以直接執行步驟604進行合併,也可以再執行步驟604之前,首先執行步驟603判斷是否進行合併。
步驟603,預測將CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度。
在某些情況下由於選擇器的名稱比較長等原因,有可能存在合併之後獲得的CSS壓縮檔的長度反而比壓縮前的還長。
例如:.aaaaaaaaa{margin:0;padding:0}.bbbbbbbbbb{margin:0;padding:1}
合併相同的樣式margin:0後為:.aaaaaaaaa,.bbbbbbbbbb{margin:0}.aaaaaaaaa{padding:0}.bbbbbbbbbb{padding:1},該壓縮後的CSS檔比壓縮前
還長。為了防止這種情況的發生,可以在合併之前執行本步驟操作。
具體的,其中一種預測方式可以是:通過比較包含相同樣式的選擇器的名稱長度與相同樣式的長度,確定將CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度,其中,包含相同樣式的選擇器中還包含不同樣式。
以兩選擇器包含相同樣式為例,若兩選擇器中除了包含相同樣式外,還均包含其它不同樣式,例如:.aa……a{margin:0;padding:0}.bb……b{margin:0;padding:1}
則需要判斷兩選擇器aa……a和bb……b的名稱長度之和是否大於相同樣式margin:0的長度,若是,則不能合併,若否,則可以合併。
若兩選擇器中只有一個選擇器除了包含相同樣式外,還包含其它不同樣式,例如:.aa……a{margin:0;padding:0}.bb……b{margin:0}
則需要判斷該包含其它樣式的選擇器aa……a的名稱長度是否大於相同樣式margin:0的長度,若是,則不能合併,若否,則可以合併。
如果相同樣式的選擇器中所包含的樣式完全相同,也即包含相同樣式的選擇器中不再包含其它不同樣式,例如:.a……a{margin:0;color:#000}.b……b{margin:0;color:#000}
則無論選擇器的名稱長度如何,合併後的CSS壓縮
檔的長度必然小於原CSS檔,因此可以直接執行步驟604進行合併。
在預測合併後獲得的CSS檔的長度小於合併前的CSS檔的長度後,即可執行步驟604。
步驟604,將CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
該合併過程具體可以如圖8所示,可以包括以下步驟:步驟801,提取CSS檔中各選擇器的相同樣式作為公因數。
例如:.a{margin:0;padding:0}.b{margin:0;padding:1},可以提取公因數margin:0。
步驟802,將包含相同樣式的選擇器作為公因數的共同選擇器,將各選擇器的相同樣式放在共同選擇器中,獲得CSS壓縮檔。
上例中可以獲得共同選擇器為a,b,將相同樣式也即公因數放在共同選擇器後,合併結果為.a,.b{margin:0}.a{padding:0}.b{padding:1}。
然而,在CSS檔中極有可能存在多個選擇器之間分別具有多組相同的樣式,例如:.a{margin:0;padding:0;color:#FFF}.b{margin:0;padding:1;color:#FFF}.c{margin:0;padding:1;color:#000}
為了盡可能的獲得最小的CSS壓縮檔,還可以進一步包括以下步驟:
步驟803,比較所獲得的所有CSS壓縮檔的長度。
其中,在CSS檔中提取不同的公因數會對應獲得不同的CSS壓縮檔。上例中,所提取的公因數可以是margin:0、padding:1、color:#FFF中的任一個或任意組合,這樣給予提取公因數的不同就會獲得不同的CSS壓縮檔。
步驟804,選擇長度最短的CSS壓縮檔作為最終的CSS壓縮檔。
理想情況下應該遍歷所有提取公因數的可能性,比較所有可能的CSS壓縮檔的長度,選擇最短的CSS壓縮檔作為最終的CSS壓縮檔。
然而,當CSS檔較為複雜時,例如有n條選擇器,m種樣式,最壞情況下可能性有n!m!個,計算結果的複雜度現實根本無法接受,基於此,本步驟在按照步驟801-802進行合併時,可以採用最大圖形化選擇演算法進行合併,具體的,提取CSS檔中各選擇器的相同樣式作為公因數的過程可以如圖9所示,包括:步驟901,對各選擇器中的樣式進行排序。
可以對各選擇器中的樣式按照字母順序進行排序。
假設有n個選擇器,m種樣式名,為了便於查找相同的樣式,可以將排序後的選擇器和樣式名構成一個二維陣列表格,縱列為n,橫行為m。以.a{margin:0;padding:0;color:#FFF}.b{margin:0;padding:1;color:#FFF}.c{margin:0;padding:1;color:#000}為例:
步驟902,按照具有相同樣式的選擇器的數量,由大到小依次提取各選擇器的相同樣式作為公因數。
最大圖形化選擇實際為按照具有相同樣式的選擇器的數量,由大到小依次提取各選擇器的相同樣式作為公因數。即首先選擇可以被合併數目最多的相同樣式,當數目最多時表格中被選擇的格數也最多,圖形面積也最大。
上例中M1列的3個樣式相同,且滿足合併條件,合併的圖形面積為3;M2列的N2和N3可以安全合併,面積為2;M3的N1和N2可以安全合併,面積為2。最大圖形選擇首先選擇公因數對應的選擇器為3個的,其次選擇兩個為2的進行合併。如果面積相同則隨便選擇一個。當格子被合併後,下次計算面積時也即提取公因數時將被排除在外。
在按照具有相同樣式的選擇器的數量,由大到小依次提取各選擇器的相同樣式作為公因數後,即可將包含相同樣式的選擇器作為公因數的共同選擇器,將各選擇器的相同樣式放在共同選擇器中,獲得CSS壓縮檔。上例的CSS壓縮檔為:.a,.b,.c{margin:0}.a,.b{color:#FFF}.a{padding:0}.b,.c{padding:1}.c{color:#000}
CSS壓縮檔的長度相較於原CSS檔減少了21個字元。
該步驟604中只提取滿足合併條件的公因數,可以預先在步驟602中一次性判斷哪些相同樣式滿足合併條件可以提取公因數,也可以在執行步驟604時,每提取一個公因數時即判斷一下該相同樣式是否滿足合併條件,若滿足再提取。
本實施例通過對各選擇器中相同的樣式進行合併,有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
在另一實施例中,如果所確定的CSS檔中的合併參量為兩個或三個,例如合併參量為相同選擇器和不同選擇器的相同樣式,則依次按照前述實施例的步驟首先合併相同選擇器再合併不同選擇器的相同樣式,直至獲得最終的CSS壓縮檔;若合併參量為同一選擇器中的相同樣式名和不同選擇器的相同樣式,則依次按照前述實施例的步驟首先合併同一選擇器中的相同樣式名再合併不同選擇器的相同樣式,直至獲得最終的CSS壓縮檔。若合併參量為三個,分別為相同選擇器、同一選擇器中的相同樣式名和不同選擇器的相同樣式,則依次按照前述實施例的步驟首先合併相同選擇器,再合併不同選擇器的相同樣式,最後合併不同選擇器的相同樣式,直至獲得最終的CSS壓縮檔。
需要說明的是,對於方法實施例,為了簡單描述,故
將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請實施例並不受所描述的動作順序的限制,因為依據本申請實施例,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於較佳實施例,所涉及的動作並不一定是本申請實施例所必須的。
參照圖10,示出了本申請一種資料壓縮裝置實施例的結構方塊圖,具體可以包括如下模組:參量確定單元1001,被配置為確定階層式樣式表CSS檔中的合併參量,所述合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷單元1002,被配置為判斷所述合併參量是否滿足合併條件;合併單元1003,被配置為當所述判斷單元判斷所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
本申請實施例通過上述單元對CSS檔中的合併參量在滿足合併條件下進行合併,從而在保證安全壓縮的基礎上,提高了壓縮比,更有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
在另一實施例中,當參量確定單元1001確定出的合併參量為相同的選擇器時,判斷單元1002可以進一步包括:
第一判斷子單元,被配置為判斷第一選擇器與第二選擇器是否緊鄰;其中,所述第一選擇器與所述第二選擇器是在所述CSS檔中先後排列的相同的選擇器;若是,則滿足合併條件;第二判斷子單元,被配置為當第一選擇器與第二選擇器不緊鄰時,判斷中間選擇器與所述第二選擇器和所述第三選擇器中是否包含相同的樣式名;其中,所述中間選擇器是位於所述第一選擇器與所述第二選擇器之間的選擇器;若否,則滿足合併條件;第三判斷子單元,被配置為當第二判斷子單元判斷第二選擇器與中間選擇器中包含相同的樣式名時,判斷所述中間選擇器與所述第一選擇器或所述第二選擇器所包含的相同的樣式名的值是否相同;若是,則滿足合併條件;第四判斷子單元,被配置為當第三判斷子單元判斷所述中間選擇器與所述第二選擇器所包含的相同的樣式名的值不相同時,判斷所述中間選擇器與所述第一選擇器或所述第二選擇器相比,所包含的相同樣式名的值是否具有不同的優先順序;若是,則滿足合併條件。
此時,合併單元1003具體被配置為當所述合併參量滿足合併條件時,將所述相同選擇器中的樣式合併至同一選擇器中。
本實施例通過上述單元對相同的選擇器進行合併,有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
在另一實施例中,當參量確定單元1001確定出的合併參量為同一選擇器中相同的樣式名時,判斷單元1002進一步包括:第五判斷子單元,被配置為判斷所述同一選擇器中相同的樣式名的值是否相同;若是,則滿足合併條件;第六判斷子單元,被配置為當第五判斷子單元判斷同一選擇器中相同的樣式名的值不同時,判斷所述同一選擇器中相同的樣式名之間是否存在覆蓋與被覆蓋關係;若否,則滿足合併條件;第七判斷子單元,被配置為當第六判斷子單元判斷同一選擇器中相同的樣式名之間存在覆蓋與被覆蓋關係時,當所述相同樣式名中後者覆蓋前者時,判斷所述前者的樣式名的值是否具有更高的優先順序,若否,則滿足合併條件;當所述相同樣式名中前者覆蓋後者時,判斷所述前者的樣式名的值是否具有更高的優先順序,若是,則滿足合併條件。
此時,合併單元1003具體被配置為當所述合併參量滿足合併條件時,若所述相同樣式名的值之間具有相同的優先順序,則由後者覆蓋前者,獲得CSS壓縮檔;若所述相同的樣式名的值之間具有不同的優先順序,則由優先順序高者覆蓋優先順序低者,獲得CSS壓縮檔。
本實施例通過上述單元對同一選擇器中相同的樣式名進行合併,有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
在另一實施例中,當參量確定單元1003確定出合併參量為不同選擇器中的相同樣式時,該裝置還包括:預測單元,被配置為在合併單元將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔之前,預測將所述CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度;合併單元1003,具體在預測單元預測合併後獲得的CSS檔的長度小於合併前的CSS檔的長度時,再將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
該預測單元,具體被配置為通過比較包含所述相同樣式的選擇器的名稱長度與所述相同樣式的長度,確定將所述CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度,其中,所述包含所述相同樣式的選擇器中還包含不同樣式。
此時,合併單元1003可進一步包括:提取子單元,被配置為提取所述CSS檔中各選擇器的相同樣式作為公因數;合併子單元,被配置為將包含所述相同樣式的選擇器作為所述公因數的共同選擇器進行合併,獲得CSS壓縮檔。
另一實例中,合併單元1003還可以進一步包括:比較子單元,被配置為比較所獲得的所有CSS壓縮檔的長度;其中,在所述CSS檔中提取不同的公因數對應獲得不同的CSS壓縮檔;
選擇子單元,被配置為選擇長度最短的CSS壓縮檔作為最終的CSS壓縮檔。
另一實例中,提取子單元還可以進一步包括:排序子單元,被配置為對所述各選擇器中的樣式進行排序;提取子單元,被配置為按照具有相同樣式的選擇器的數量,由大到小依次提取所述各選擇器的相同樣式作為公因數。
在另一實例中,判斷單元1002可以包括:第八判斷子單元,被配置為判斷第三選擇器與第四選擇器是否緊鄰,其中所述第三選擇器與所述第四選擇器是在所述CSS檔中先後排列的具有相同樣式的選擇器;若是,則滿足合併條件;第九判斷子單元,被配置為當第八判斷子單元判斷第三選擇器與第四選擇器不緊鄰時,判斷間隔選擇器中是否包含所述第三選擇器和所述第四選擇器的所述相同樣式的樣式名,所述間隔選擇器是位於所述第三選擇器與所述第四選擇器之間的選擇器;若否,則滿足合併條件;第十判斷子單元,被配置為當第九判斷子單元判斷第四選擇器與間隔選擇器中包含相同的樣式名時,判斷所述間隔選擇器與所述第三選擇器或所述第四選擇器相比,所包含的所述相同樣式的樣式名的值是否具有不同的優先順序;若是,則滿足合併條件。
本實施例通過上述單元對各選擇器中相同的樣式進行
合併,有效的縮短了CSS檔的長度,節省了其佔用的頻寬,更利於網路傳輸。
本申請還公開了一種電子設備,包括資料匯流排,記憶體和處理器,其中,記憶體中儲存有一段運行程式碼,處理器通過資料匯流排獲取記憶體中的程式碼,並執行以下步驟:確定階層式樣式表CSS檔中的合併參量,所述合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷所述合併參量是否滿足合併條件;當所述合併參量滿足合併條件時,將所述CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
對於裝置實施例而言,由於其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本申請實施例的實施例可提供為方法、裝置、或電腦程式產品。因此,本申請實施例可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本申請實施例可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶
體等)上實施的電腦程式產品的形式。
在一個典型的配置中,所述電腦設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和記憶體。記憶體可能包括電腦可讀介質中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。記憶體是電腦可讀媒體的示例。電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可抹除可程式設計唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁磁片儲存或其他磁性存放裝置或任何其他非傳輸媒體,可用於儲存可以被計算設備訪問的資訊。按照本文中的界定,電腦可讀媒體不包括非持續性的電腦可讀媒體(transitory media),如調製的資料信號和載波。
本申請實施例是參照根據本申請實施例的方法、終端設備(系統)、和電腦程式產品的流程圖和/或方塊圖來描述的。應理解可由電腦程式指令實現流程圖和/或方塊圖中的每一流程和/或方塊、以及流程圖和/或方塊圖中
的流程和/或方塊的結合。可提供這些電腦程式指令到通用電腦、專用電腦、嵌入式處理機或其他可程式設計資料處理終端設備的處理器以產生一個機器,使得透過電腦或其他可程式設計資料處理終端設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方塊圖一個方框或多個方塊中指定的功能的裝置。
這些電腦程式指令也可儲存在能引導電腦或其他可程式設計資料處理終端設備以特定方式工作的電腦可讀記憶體中,使得儲存在該電腦可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能。
這些電腦程式指令也可裝載到電腦或其他可程式設計資料處理終端設備上,使得在電腦或其他可程式設計終端設備上執行一系列操作步驟以產生電腦實現的處理,從而在電腦或其他可程式設計終端設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的步驟。
儘管已描述了本申請實施例的較佳實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附申請專利範圍意欲解釋為包括較佳實施例以及落入本申請實施例範圍的所有變更和修改。
最後,還需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個
實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,並不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本申請所提供的一種資料壓縮方法和一種資料壓縮裝置,進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本申請的方法及其核心思想;同時,對於本領域的一般技術人員,依據本申請的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。
Claims (12)
- 一種資料壓縮方法,其特徵在於,包括:確定階層式樣式表CSS檔中的合併參量,該合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷該合併參量是否滿足合併條件;當該合併參量滿足合併條件時,將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
- 根據申請專利範圍第1項所述的方法,其中,當該合併參量為相同的選擇器時,該判斷該合併參量是否滿足合併條件,包括:判斷第一選擇器與第二選擇器是否緊鄰;其中,該第一選擇器與該第二選擇器是在該CSS檔中先後排列的相同的選擇器;若是,則滿足合併條件;若否,則判斷中間選擇器與該第二選擇器和該第三選擇器中是否包含相同的樣式名;其中,該中間選擇器是位於該第一選擇器與該第二選擇器之間的選擇器;若否,則滿足合併條件;若是,則判斷該中間選擇器與該第一選擇器或該第二選擇器所包含的相同的樣式名的值是否相同;若是,則滿足合併條件;若否,則判斷該中間選擇器與該第一選擇器或該第二選擇器相比,所包含的相同樣式名的值是否具有不同的優先順序; 若是,則滿足合併條件。
- 根據申請專利範圍第1或2項所述的方法,其中,該當該合併參量滿足合併條件時,將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔,包括:當該合併參量滿足合併條件時,將該相同選擇器中的樣式合併至同一選擇器中。
- 根據申請專利範圍第1項所述的方法,其中,當該合併參量為同一選擇器中相同的樣式名時,該判斷該合併參量是否滿足合併條件,包括:判斷該同一選擇器中相同的樣式名的值是否相同;若是,則滿足合併條件;若否,則判斷該同一選擇器中相同的樣式名之間是否存在覆蓋與被覆蓋關係;若否,則滿足合併條件;若是,則當該相同樣式名中後者覆蓋前者時,判斷該前者的樣式名的值是否具有更高的優先順序,若否,則滿足合併條件;當該相同樣式名中前者覆蓋後者時,判斷該前者的樣式名的值是否具有更高的優先順序,若是,則滿足合併條件。
- 根據申請專利範圍第1或4項所述的方法,其中,該當該合併參量滿足合併條件時,將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔,包括:當該合併參量滿足合併條件時,若該相同樣式名的值之間具有相同的優先順序,則由後者覆蓋前者,獲得CSS壓縮檔;若該相同的樣式名的值之間具有不同的優先順序,則由優先順序高者覆蓋優先順序低者,獲得CSS壓 縮檔。
- 根據申請專利範圍第1項所述的方法,其中,當該合併參量為不同選擇器中的相同樣式時,在該將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔之前,還包括:預測將該CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度;若是,再將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
- 根據申請專利範圍第6項所述的方法,其中,該預測將該CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度,包括:透過比較包含該相同樣式的選擇器的名稱長度與該相同樣式的長度,確定將該CSS檔中的合併參量進行合併後獲得的CSS檔的長度是否小於合併前的CSS檔的長度,其中,該包含該相同樣式的選擇器中還包含不同樣式。
- 根據申請專利範圍第6項所述的方法,其中,該將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔,包括:提取該CSS檔中各選擇器的相同樣式作為公因數;將包含該相同樣式的選擇器作為該公因數的共同選擇器進行合併,獲得CSS壓縮檔。
- 根據申請專利範圍第8項所述的方法,其中,該 將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔,還包括:比較所獲得的所有CSS壓縮檔的長度;其中,在該CSS檔中提取不同的公因數對應獲得不同的CSS壓縮檔;選擇長度最短的CSS壓縮檔作為最終的CSS壓縮檔。
- 根據申請專利範圍第8項所述的方法,其中,該提取該CSS檔中各選擇器的相同樣式作為公因數,包括:對該各選擇器中的樣式進行排序;按照具有相同樣式的選擇器的數量,由大到小依次提取該各選擇器的相同樣式作為公因數。
- 根據申請專利範圍第6至10項中任意一項所述的方法,其中,該判斷該合併參量是否滿足合併條件,包括:判斷第三選擇器與第四選擇器是否緊鄰,其中該第三選擇器與該第四選擇器是在該CSS檔中先後排列的具有相同樣式的選擇器;若是,則滿足合併條件;若否,則判斷間隔選擇器中是否包含該第三選擇器和該第四選擇器的該相同樣式的樣式名,該間隔選擇器是位於該第三選擇器與該第四選擇器之間的選擇器;若否,則滿足合併條件;若是,則判斷該間隔選擇器與該第三選擇器或該第四選擇器相比,所包含的該相同樣 式的樣式名的值是否具有不同的優先順序;若是,則滿足合併條件。
- 一種資料壓縮裝置,其特徵在於,包括:參量確定單元,被配置為確定階層式樣式表CSS檔中的合併參量,該合併參量至少包括相同的選擇器、同一選擇器中相同的樣式名、不同選擇器中的相同樣式中的一種;判斷單元,被配置為判斷該合併參量是否滿足合併條件;合併單元,被配置為當該判斷單元判斷該合併參量滿足合併條件時,將該CSS檔中的合併參量進行合併,獲得CSS壓縮檔。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410545554.XA CN105577719B (zh) | 2014-10-15 | 2014-10-15 | 一种数据压缩方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201617940A true TW201617940A (zh) | 2016-05-16 |
Family
ID=55749207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104114574A TW201617940A (zh) | 2014-10-15 | 2015-05-07 | 資料壓縮方法和裝置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9747385B2 (zh) |
EP (1) | EP3207461A4 (zh) |
JP (1) | JP6373489B2 (zh) |
KR (1) | KR102018445B1 (zh) |
CN (1) | CN105577719B (zh) |
SG (1) | SG11201701997UA (zh) |
TW (1) | TW201617940A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632991B2 (en) * | 2014-09-15 | 2017-04-25 | Oracle International Corporation | High performant and high fidelity previews for CSS preprocessing frameworks |
US10613885B2 (en) * | 2017-02-24 | 2020-04-07 | International Business Machines Corporation | Portable aggregated information calculation and injection for application containers |
US10691816B2 (en) | 2017-02-24 | 2020-06-23 | International Business Machines Corporation | Applying host access control rules for data used in application containers |
CN109558138A (zh) * | 2018-11-20 | 2019-04-02 | 北京小米移动软件有限公司 | 后代选择器处理方法及装置 |
CN109582654B (zh) * | 2018-11-30 | 2021-09-03 | 万兴科技股份有限公司 | Pdf文档压缩方法、装置、计算机设备及存储介质 |
CN110688118B (zh) * | 2019-10-28 | 2023-05-05 | 郑州阿帕斯科技有限公司 | 一种网页优化方法及装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299411B2 (en) | 2002-09-27 | 2007-11-20 | Liberate Technologies | Providing a presentation engine adapted for use by a constrained resource client device |
US7769773B1 (en) * | 2004-08-31 | 2010-08-03 | Adobe Systems Incorporated | Relevant rule inspector for hierarchical documents |
US7562070B2 (en) * | 2005-04-01 | 2009-07-14 | Microsoft Corporation | Method and system for aggregating rules that define values for the same property associated with the same document element |
US7827481B1 (en) * | 2005-07-25 | 2010-11-02 | Adobe Systems Incorporated | Defining style values as objects |
US7685513B2 (en) * | 2006-04-18 | 2010-03-23 | Xerox Corporation | Optimization of storage and delivery of markup language files |
US7836396B2 (en) * | 2007-01-05 | 2010-11-16 | International Business Machines Corporation | Automatically collecting and compressing style attributes within a web document |
NZ566291A (en) | 2008-02-27 | 2008-12-24 | Actionthis Ltd | Methods and devices for post processing rendered web pages and handling requests of post processed web pages |
US8204964B2 (en) | 2008-08-06 | 2012-06-19 | Microsoft Corporation | Efficient size optimization of visual information or auditory information |
US8788577B2 (en) * | 2010-06-22 | 2014-07-22 | Akamai Technologies, Inc. | Method and system for automated analysis and transformation of web pages |
US8739023B2 (en) | 2011-07-20 | 2014-05-27 | International Business Machines Corporation | Utilizing a graphical transition to sort an interface element independently of a document object model |
US20130159839A1 (en) * | 2011-12-14 | 2013-06-20 | Microsoft Corporation | Semantic compression of cascading style sheets |
WO2013102802A1 (en) * | 2012-01-02 | 2013-07-11 | International Business Machines Corporation | Conflict resolution of css definition from multiple sources |
US20140095579A1 (en) | 2012-09-28 | 2014-04-03 | Verizon Patent And Licensing Inc. | System and method for increasing web site serving performance |
US9785621B2 (en) * | 2012-11-26 | 2017-10-10 | Akamai Technologies, Inc. | Progressive consolidation of web page resources |
US9087070B2 (en) * | 2013-01-31 | 2015-07-21 | Yahoo! Inc. | System and method for applying an efficient data compression scheme to URL parameters |
CN104063401B (zh) | 2013-03-22 | 2018-02-02 | 阿里巴巴集团控股有限公司 | 一种网页样式地址合并的方法和装置 |
-
2014
- 2014-10-15 CN CN201410545554.XA patent/CN105577719B/zh active Active
-
2015
- 2015-05-07 TW TW104114574A patent/TW201617940A/zh unknown
- 2015-10-12 US US14/881,066 patent/US9747385B2/en active Active
- 2015-10-14 SG SG11201701997UA patent/SG11201701997UA/en unknown
- 2015-10-14 KR KR1020177010286A patent/KR102018445B1/ko active IP Right Grant
- 2015-10-14 EP EP15850437.3A patent/EP3207461A4/en not_active Ceased
- 2015-10-14 JP JP2017513126A patent/JP6373489B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
CN105577719B (zh) | 2019-11-05 |
KR20170072203A (ko) | 2017-06-26 |
CN105577719A (zh) | 2016-05-11 |
EP3207461A4 (en) | 2018-06-13 |
JP2017532655A (ja) | 2017-11-02 |
JP6373489B2 (ja) | 2018-08-15 |
SG11201701997UA (en) | 2017-04-27 |
US20160110324A1 (en) | 2016-04-21 |
KR102018445B1 (ko) | 2019-09-04 |
US9747385B2 (en) | 2017-08-29 |
EP3207461A1 (en) | 2017-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201617940A (zh) | 資料壓縮方法和裝置 | |
CN107038206B (zh) | Lsm树的建立方法、lsm树的数据读取方法和服务器 | |
CN106610774B (zh) | 网页表格编辑方法及装置 | |
CN110188108B (zh) | 数据存储方法、装置、系统、计算机设备及存储介质 | |
US9983760B2 (en) | Apparatus, method and computer readable recording medium for arranging a plurality of items automatically in a canvas | |
JP2019511040A (ja) | テキスト情報クラスタ化方法及びテキスト情報クラスタ化システム | |
CN104063365B (zh) | 在pdf文档中插入对象的方法 | |
CN106610931B (zh) | 话题名称的提取方法及装置 | |
CN109977366B (zh) | 一种目录生成方法及装置 | |
CN104111922A (zh) | 一种流式文档的处理方法及装置 | |
CN109918658A (zh) | 一种从文本中获取目标词汇的方法及系统 | |
CN111476017B (zh) | 网页表格编辑方法、装置及电子设备 | |
CN111414228B (zh) | 基于Kubernetes的管理存储空间的方法和相关装置 | |
CN107783946A (zh) | 文本显示方法及文本显示设备 | |
CN110232156B (zh) | 基于长文本的信息推荐方法及装置 | |
CN106970758A (zh) | 电子文档操作处理方法、装置和电子设备 | |
JP6158430B2 (ja) | データベースのハッシュ結合処理をストレージ装置が実行するシステム | |
CN108874829B (zh) | 网页的处理方法、装置、智能设备及计算机存储介质 | |
US10810165B2 (en) | Distributed storage server, server device included therein, and method of operating server device | |
US20140351298A1 (en) | Method and apparatus for distributed processing of file | |
CN105989276A (zh) | Rbac权限体系中的角色优化方法和装置 | |
CN106933970A (zh) | 一种快速烧录数据至ext分区的方法和装置 | |
CN104572033A (zh) | 系统生成方法及装置 | |
CN106776529B (zh) | 业务情感分析方法及装置 | |
CN106649340A (zh) | 条件过滤数据的存取方法及装置 |