本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)頁優(yōu)化方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)進入Web(網(wǎng)絡(luò))2.0時代,網(wǎng)頁中引用的靜態(tài)資源文件越來越多,大量的CSS(Cascading Style Sheets,層疊樣式表)、JavaScript和圖片被引入到頁面中,以增強Web站點的表現(xiàn)力和交互能力。但隨著網(wǎng)頁中的靜態(tài)資源文件的增加,尤其是JavaScript的增加,使網(wǎng)頁加載的速度受到了很大的影響。所以優(yōu)化頁面中引用的靜態(tài)資源文件成為提高加載網(wǎng)頁速度的關(guān)鍵。
當前加載網(wǎng)頁的主要技術(shù)是針對網(wǎng)頁中的靜態(tài)資源文件進行優(yōu)化,例如最小化或合并CSS和JavaScript文件,轉(zhuǎn)換圖片格式,以及刪除頁面內(nèi)容中的注釋和空白等。對網(wǎng)頁中的靜態(tài)資源文件進行優(yōu)化是網(wǎng)頁發(fā)布前通過工具(例如:YUI Comprosessor)對網(wǎng)頁中的靜態(tài)資源文件進行優(yōu)化,或在Web服務器上對網(wǎng)頁中的靜態(tài)資源文件進行優(yōu)化,或邊緣代理服務器上對網(wǎng)頁中的靜態(tài)資源文件進行優(yōu)化。上述對靜態(tài)資源文件的優(yōu)化都有明顯不足,例如工具不能針對不同客戶端做實時相應的優(yōu)化,web服務器的優(yōu)化會降低并發(fā)能力,邊緣代理不能針對全網(wǎng)用戶等。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是,提供一種網(wǎng)頁優(yōu)化方法及裝置,克服現(xiàn)有技術(shù)中不能實時地和高并發(fā)地針對全網(wǎng)用戶對網(wǎng)頁中的靜態(tài)資源文件進行優(yōu)化的缺陷。
本發(fā)明采用的技術(shù)方案是,所述一種網(wǎng)頁優(yōu)化方法,包括:
當客戶端向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)時,反向代理服務器與所述網(wǎng)絡(luò)服務器建立連接,并接收所述網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)描述信息;
反向代理服務器基于對所述網(wǎng)頁數(shù)據(jù)描述信息解析得到的解析結(jié)果,從所述網(wǎng)絡(luò)服務器獲取所述網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件;
反向代理服務器對接收到的所述網(wǎng)絡(luò)服務器發(fā)送的所述靜態(tài)資源文件進行優(yōu)化,并將優(yōu)化后的靜態(tài)資源文件發(fā)送至所述客戶端。
進一步地,所述靜態(tài)資源文件包括以下數(shù)據(jù)類型中的一種或多種:
層疊樣式表CSS文件、JavaScript文件和圖片文件。
進一步地,所述對所述靜態(tài)資源文件進行優(yōu)化的方式包括以下靜態(tài)資源文件優(yōu)化方式中的一種或多種:
刪除靜態(tài)資源文件中的超級文本標記語言HTML注釋、HTML空格、HTML回車和HTML換行;
最小化靜態(tài)資源文件中的CSS文件、合并靜態(tài)資源文件中的CSS文件和內(nèi)嵌靜態(tài)資源文件中的引用CSS文件;
最小化靜態(tài)資源文件中的JavaScrip文件、合并靜態(tài)資源文件中的JavaScrip文件和內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件;
轉(zhuǎn)換圖片文件格式和內(nèi)嵌靜態(tài)資源文件中的圖片文件。
進一步地,所述最小化靜態(tài)資源文件中的CSS文件包括:刪除靜態(tài)資源文件中的CSS文件的注釋、回車符、換行符和制表定位Tab符;
所述合并靜態(tài)資源文件中的CSS文件包括:將相鄰的CSS文件合并為一個CSS文件;
所述內(nèi)嵌靜態(tài)資源文件中的引用CSS文件包括:將靜態(tài)資源文件中引用的CSS文件嵌入所述網(wǎng)頁數(shù)據(jù)中,并刪除所述引用的CSS文件的引用標簽;
所述最小化靜態(tài)資源文件中的JavaScrip文件包括:刪除靜態(tài)資源文件中的JavaScrip文件的注釋、回車符、換行符和空格符;
所述合并靜態(tài)資源文件中的JavaScrip文件包括:在預設(shè)的JavaScrip文件容量限制下,將所述靜態(tài)資源文件中的JavaScrip文件合并為一個或多個JavaScrip文件;
所述內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件包括:將小于預設(shè)的JavaScrip文件容量的JavaScrip文件嵌入所述網(wǎng)頁數(shù)據(jù)中;
所述轉(zhuǎn)換圖片文件格式包括:基于客戶端的類型,將圖片文件格式轉(zhuǎn)換為小于預設(shè)的圖片容量的圖片文件格式;
所述內(nèi)嵌靜態(tài)資源文件中的圖片文件包括:基于客戶端的類型,將小于預設(shè)的圖片容量的圖片文件嵌入所述網(wǎng)頁數(shù)據(jù)中。
本發(fā)明還提供一種網(wǎng)頁優(yōu)化裝置,設(shè)置于反向代理服務器,所述裝置包括:
接收模塊,用于當客戶端向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)時,與所述網(wǎng)絡(luò)服務器建立連接,并接收所述網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)描述信息;
解析模塊,用于基于對所述網(wǎng)頁數(shù)據(jù)描述信息解析得到的解析結(jié)果,從所述網(wǎng)絡(luò)服務器獲取所述網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件;
優(yōu)化模塊,用于對接收到的所述網(wǎng)絡(luò)服務器發(fā)送的所述靜態(tài)資源文件進行優(yōu)化,并將優(yōu)化后的靜態(tài)資源文件發(fā)送至所述客戶端。
進一步地,所述靜態(tài)資源文件包括以下數(shù)據(jù)類型中的一種或多種:
層疊樣式表CSS文件、JavaScript文件和圖片文件。
進一步地,所述優(yōu)化模塊包括以下一個或多個模塊:
超級文本標記語言HTML優(yōu)化模塊,用于刪除靜態(tài)資源文件中的超級文本標記語言HTML注釋、HTML空格、HTML回車和HTML換行;
CSS優(yōu)化模塊,用于最小化靜態(tài)資源文件中的CSS文件、合并靜態(tài)資源文件中的CSS文件和/或內(nèi)嵌靜態(tài)資源文件中的引用CSS文件;
JavaScrip優(yōu)化模塊,用于最小化靜態(tài)資源文件中的JavaScrip文件、合并靜態(tài)資源文件中的JavaScrip文件和/或內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件;
圖片優(yōu)化模塊,用于轉(zhuǎn)換圖片文件格式和/或內(nèi)嵌靜態(tài)資源文件中的圖片文件。
進一步地,所述CSS優(yōu)化模塊,具體用于采用以下一種或多種方式對所述靜態(tài)資源文件進行優(yōu)化:
刪除靜態(tài)資源文件中的CSS文件的注釋、回車符、換行符和制表定位Tab符;
將相鄰的CSS文件合并為一個CSS文件;
將靜態(tài)資源文件中引用的CSS文件嵌入所述網(wǎng)頁數(shù)據(jù)中,并刪除所述引用的CSS文件的引用標簽。
進一步地,所述JavaScrip優(yōu)化模塊,具體用于采用以下一種或多種方式對所述靜態(tài)資源文件進行優(yōu)化:
刪除靜態(tài)資源文件中的JavaScrip文件的注釋、回車符、換行符和空格符;
在預設(shè)的JavaScrip文件容量限制下,將所述靜態(tài)資源文件中的JavaScrip文件合并為一個或多個JavaScrip文件;
將小于預設(shè)的JavaScrip文件容量的JavaScrip文件嵌入所述網(wǎng)頁數(shù)據(jù)中。
進一步地,圖片優(yōu)化模塊,具體用于采用以下一種或多種方式對所述靜態(tài)資源文件進行優(yōu)化:
基于客戶端的類型,將圖片文件格式的轉(zhuǎn)換為小于預設(shè)的圖片容量的圖片文件格式;
基于客戶端的類型,將小于預設(shè)的圖片容量的圖片文件嵌入所述網(wǎng)頁數(shù)據(jù)中。
采用上述技術(shù)方案,本發(fā)明至少具有下列優(yōu)點:
本發(fā)明所述一種網(wǎng)頁優(yōu)化方法及裝置,能夠針對訪問網(wǎng)絡(luò)服務器的所有用戶進行網(wǎng)頁優(yōu)化,在用戶客戶端接收網(wǎng)頁數(shù)據(jù)的過程中,對網(wǎng)頁進行優(yōu)化,極大的提高了客戶端加載網(wǎng)頁的速度。
附圖說明
圖1為本發(fā)明第一實施例的網(wǎng)頁優(yōu)化方法流程圖;
圖2為本發(fā)明第二實施例的網(wǎng)頁優(yōu)化裝置組成結(jié)構(gòu)示意圖。
具體實施方式
為更進一步闡述本發(fā)明為達成預定目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實施例,對本發(fā)明進行詳細說明如后。
本發(fā)明第一實施例,一種網(wǎng)頁優(yōu)化方法,應用于反向代理服務器,如圖1所示,包括以下具體步驟:
步驟S101,當客戶端向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)時,與網(wǎng)絡(luò)服務器建立連接,并接收網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)描述信息。
具體的,步驟S101,包括:
客戶端向反向代理服務器發(fā)送網(wǎng)頁數(shù)據(jù)請求,反向代理服務器與網(wǎng)頁數(shù)據(jù)對應的網(wǎng)絡(luò)服務器建立連接;
反向代理服務器向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)描述信息;
反向代理服務器接收網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)描述信息。
步驟S102,基于對網(wǎng)頁數(shù)據(jù)描述信息解析得到的解析結(jié)果,從網(wǎng)絡(luò)服務器獲取網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件。
具體的,步驟S102,包括:
對接收到的網(wǎng)頁數(shù)據(jù)描述信息進行解析;
根據(jù)網(wǎng)頁數(shù)據(jù)描述信息的解析結(jié)果,向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件和除靜態(tài)資源文件外的其他文件;
接收網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件和除靜態(tài)資源文件外的其他文件;
將除靜態(tài)資源文件外的其他文件發(fā)送至客戶端。
其中,靜態(tài)資源文件包括以下數(shù)據(jù)類型中的一種或多種:
層疊樣式表CSS文件、JavaScript文件和圖片文件。
步驟S103,對接收到的網(wǎng)絡(luò)服務器發(fā)送的靜態(tài)資源文件進行優(yōu)化,并將優(yōu)化后的靜態(tài)資源文件發(fā)送至客戶端。
具體的,步驟S103,包括:
對接收到的網(wǎng)絡(luò)服務器發(fā)送的靜態(tài)資源文件進行優(yōu)化,并將優(yōu)化后的靜態(tài)資源文件發(fā)送至客戶端;
其中,對靜態(tài)資源文件進行優(yōu)化的方式包括以下靜態(tài)資源文件優(yōu)化方式中的一種或多種:
刪除靜態(tài)資源文件中的HTML(Hyper Text Markup Language,超級文本標記語言)注釋、HTML空格、HTML回車和HTML換行等;
最小化靜態(tài)資源文件中的CSS文件、合并靜態(tài)資源文件中的CSS文件和內(nèi)嵌靜態(tài)資源文件中的引用CSS文件;
最小化靜態(tài)資源文件中的JavaScrip文件、合并靜態(tài)資源文件中的JavaScrip文件和內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件;
轉(zhuǎn)換圖片文件格式和內(nèi)嵌靜態(tài)資源文件中的圖片文件。
最小化靜態(tài)資源文件中的CSS文件包括:刪除靜態(tài)資源文件中的CSS文件的注釋、回車符、換行符和Tab(制表定位)符等;
合并靜態(tài)資源文件中的CSS文件包括:將相鄰的CSS文件合并為一個CSS文件;其中,相鄰的CSS文件為靜態(tài)資源文件中順序相連的一個或多個CSS文件。若靜態(tài)資源文件中的CSS文件之間間隔有其他文件,則間隔有其他文件的CSS文件判定為不相鄰。
內(nèi)嵌靜態(tài)資源文件中的引用CSS文件包括:將靜態(tài)資源文件中引用的CSS文件嵌入網(wǎng)頁數(shù)據(jù)中,并刪除被引用的CSS文件的引用標簽。
最小化靜態(tài)資源文件中的JavaScrip文件包括:刪除靜態(tài)資源文件中的JavaScrip文件的注釋、回車符、換行符和空格符;
合并靜態(tài)資源文件中的JavaScrip文件包括:在預設(shè)的JavaScrip文件容量限制下,將靜態(tài)資源文件中的JavaScrip文件合并為一個或多個JavaScrip文件;
內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件包括:將小于預設(shè)的JavaScrip文件容量的JavaScrip文件嵌入網(wǎng)頁數(shù)據(jù)中。
轉(zhuǎn)換圖片文件格式包括:基于客戶端的類型,將圖片的轉(zhuǎn)換為小于預設(shè)的圖片容量的圖片文件;
內(nèi)嵌靜態(tài)資源文件中的圖片文件包括:基于客戶端的類型,將小于預設(shè)的圖片容量的圖片文件嵌入網(wǎng)頁數(shù)據(jù)中。
例如:對靜態(tài)資源文件進行優(yōu)化的方式包括以下靜態(tài)資源文件優(yōu)化方式中的一種或多種:
刪除靜態(tài)資源文件中的沒有實際用途的HTML注釋,保留作為瀏覽器hacker技術(shù)使用的注釋;刪除沒有實際用途的空格、回車和換行符等;
刪除靜態(tài)資源文件中的CSS文件的注釋、回車符、換行符和Tab(制表定位)符等;
將相鄰的CSS文件進行合并為一個CSS文件;
將靜態(tài)資源文件中引用的CSS文件嵌入網(wǎng)頁數(shù)據(jù)中,并刪除被引用的CSS文件的引用標簽。
刪除靜態(tài)資源文件中的JavaScrip文件的注釋、回車符、換行符和空格符;
在預設(shè)的JavaScrip文件容量限制下,將靜態(tài)資源文件中的JavaScrip文件合并包括:一個或多個JavaScrip文件;并刪除合并后的JavaScrip文件中的注釋和空格符等;
內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件包括:將小于預設(shè)的JavaScrip文件容量的JavaScrip文件嵌入網(wǎng)頁數(shù)據(jù)中。
轉(zhuǎn)換圖片文件格式包括:根基于客戶端的類型,將圖片文件格式的轉(zhuǎn)換為小于預設(shè)的圖片容量的圖片文件格式;
內(nèi)嵌靜態(tài)資源文件中的圖片文件包括:基于客戶端的類型,將小于預設(shè)的圖片容量的圖片文件嵌入網(wǎng)頁數(shù)據(jù)中。
將優(yōu)化后的靜態(tài)資源文件發(fā)送至客戶端。
本發(fā)明具有以下優(yōu)勢:
1)根據(jù)不同客戶端類型的進行針對性的優(yōu)化,保證了最佳的客戶端用戶體驗。
2)將靜態(tài)資源文件及優(yōu)化后的靜態(tài)資源文件進行緩存,避免了每次獲取靜態(tài)資源文件導致的開銷,同時緩存優(yōu)化后的靜態(tài)資源文件使得不需要每次針對相同的靜態(tài)資源文件在相同的優(yōu)化策略下進行優(yōu)化。
3)反向代理服務器每次優(yōu)化一部分頁面數(shù)據(jù),避免了一次性優(yōu)化所有頁面數(shù)據(jù)占用太長時間的缺點。通過將已經(jīng)優(yōu)化好的頁面數(shù)據(jù)或不需要優(yōu)化的頁面數(shù)據(jù)盡早發(fā)送到客戶端,不會對頁面的TTFB(Time To First Byte)造成影響。
4)使用異步的方式獲取頁面中的子資源,降低了反向代理服務器的開銷,保證了系統(tǒng)的并發(fā)。
本發(fā)明第二實施例,一種網(wǎng)頁優(yōu)化裝置,設(shè)置于反向代理服務器,如圖2所示,包括以下具體步驟:
接收模塊100,用于當客戶端向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)時,與網(wǎng)絡(luò)服務器建立連接,并接收網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)描述信息。
具體的,接收模塊100,用于:
客戶端向反向代理服務器發(fā)送網(wǎng)頁數(shù)據(jù)請求,反向代理服務器與網(wǎng)頁數(shù)據(jù)對應的網(wǎng)絡(luò)服務器建立連接;
反向代理服務器向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)描述信息;
反向代理服務器接收網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)描述信息。
解析模塊200,用于基于對網(wǎng)頁數(shù)據(jù)描述信息解析得到的解析結(jié)果,從網(wǎng)絡(luò)服務器獲取網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件。
具體的,解析模塊200,用于:
對接收到的網(wǎng)頁數(shù)據(jù)描述信息進行解析;
根據(jù)網(wǎng)頁數(shù)據(jù)描述信息的解析結(jié)果,向網(wǎng)絡(luò)服務器請求網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件和除靜態(tài)資源文件外的其他文件;
接收網(wǎng)絡(luò)服務器發(fā)送的網(wǎng)頁數(shù)據(jù)中的靜態(tài)資源文件和除靜態(tài)資源文件外的其他文件;
將除靜態(tài)資源文件外的其他文件發(fā)送至客戶端。
其中,靜態(tài)資源文件包括以下數(shù)據(jù)類型中的一種或多種:
層疊樣式表CSS文件、JavaScript文件和圖片文件。
優(yōu)化模塊300,用于對接收到的網(wǎng)絡(luò)服務器發(fā)送的靜態(tài)資源文件進行優(yōu)化,并將優(yōu)化后的靜態(tài)資源文件發(fā)送至客戶端。
具體的,優(yōu)化模塊300,用于:
對接收到的網(wǎng)絡(luò)服務器發(fā)送的靜態(tài)資源文件進行優(yōu)化,并將優(yōu)化后的靜態(tài)資源文件發(fā)送至客戶端;
其中,優(yōu)化模塊300包括以下一個或多個模塊:
HTML優(yōu)化模塊301、CSS優(yōu)化模塊302、JavaScrip優(yōu)化模塊303和圖片優(yōu)化模塊304。
HTML優(yōu)化模塊301,用于刪除靜態(tài)資源文件中的HTML(Hyper Text Markup Language,超級文本標記語言)注釋、HTML空格、HTML回車和HTML換行等;
CSS優(yōu)化模塊302,用于最小化靜態(tài)資源文件中的CSS文件、合并靜態(tài)資源文件中的CSS文件和內(nèi)嵌靜態(tài)資源文件中的引用CSS文件;
CSS優(yōu)化模塊302,具體用于采用以下一種或多種方式對所述靜態(tài)資源文件進行優(yōu)化:
刪除靜態(tài)資源文件中的CSS文件的注釋、回車符、換行符和Tab(制表定位)符等;
將相鄰的CSS文件合并為一個CSS文件;
將靜態(tài)資源文件中引用的CSS文件嵌入網(wǎng)頁數(shù)據(jù)中,并刪除被引用的CSS文件的引用標簽。
JavaScrip優(yōu)化模塊303,用于最小化靜態(tài)資源文件中的JavaScrip文件、合并靜態(tài)資源文件中的JavaScrip文件和內(nèi)嵌靜態(tài)資源文件中的JavaScrip文件。
JavaScrip優(yōu)化模塊303,具體用于采用以下一種或多種方式對所述靜態(tài)資源文件進行優(yōu)化:
刪除靜態(tài)資源文件中的JavaScrip文件的注釋、回車符、換行符和空格符;
在預設(shè)的JavaScrip文件容量限制下,將靜態(tài)資源文件中的JavaScrip文件合并為一個或多個JavaScrip文件;
將小于預設(shè)的JavaScrip文件容量的JavaScrip文件嵌入網(wǎng)頁數(shù)據(jù)中。
圖片優(yōu)化模塊304,用于轉(zhuǎn)換圖片文件格式和內(nèi)嵌靜態(tài)資源文件中的圖片文件。
圖片優(yōu)化模塊304,具體用于采用以下一種或多種方式對所述靜態(tài)資源文件進行優(yōu)化:
基于客戶端的類型,將圖片文件格式的轉(zhuǎn)換為小于預設(shè)的圖片容量的圖片文件格式;
基于客戶端的類型,將小于預設(shè)的圖片容量的圖片文件嵌入網(wǎng)頁數(shù)據(jù)中。
通過具體實施方式的說明,應當可對本發(fā)明為達成預定目的所采取的技術(shù)手段及功效得以更加深入且具體的了解,然而所附圖示僅是提供參考與說明之用,并非用來對本發(fā)明加以限制。