本發(fā)明涉及網(wǎng)頁(yè)處理技術(shù)領(lǐng)域,尤其涉及一種靜態(tài)資源請(qǐng)求的方法。
背景技術(shù):
目前瀏覽器的頁(yè)面展示及交互相對(duì)復(fù)雜,需要使用大量的css、js、img等靜態(tài)文件,而瀏覽器允許的并發(fā)請(qǐng)求資源數(shù)有限,因此極易出現(xiàn)頁(yè)面展示緩慢或展示異常的情況。
一般情況下,將css、js、img等靜態(tài)文件放在不同的域名下,能夠相對(duì)增加瀏覽器允許的并發(fā)請(qǐng)求資源數(shù),如將css放到http://zhihu.com,img放到http://zhimg.com,則css和img就可以并發(fā)請(qǐng)求了。但是這種方法增加并發(fā)請(qǐng)求資源數(shù)的能力十分有限。
公開(kāi)號(hào)為cn104063431a的中國(guó)專(zhuān)利提出了處理靜態(tài)資源的方法,包括:處理靜態(tài)資源的設(shè)備獲取網(wǎng)站下各網(wǎng)頁(yè)在指定時(shí)間內(nèi)使用靜態(tài)資源的信息;所述處理靜態(tài)資源的設(shè)備根據(jù)各網(wǎng)頁(yè)在指定時(shí)間內(nèi)使用靜態(tài)資源的信息和用戶訪問(wèn)各網(wǎng)頁(yè)使用的網(wǎng)絡(luò)的狀況,確定各網(wǎng)頁(yè)使用的靜態(tài)資源是否可以合并??梢栽诓恍枰斯⑴c的情況下確定靜態(tài)資源之間是否可以合并,有利于實(shí)現(xiàn)靜態(tài)資源之間的合并,提高網(wǎng)站性能,但是該方案是針對(duì)網(wǎng)頁(yè)頁(yè)面,且該方案是根據(jù)指定時(shí)間內(nèi)使用靜態(tài)資源的信息和用戶訪問(wèn)各網(wǎng)頁(yè)使用的網(wǎng)絡(luò)的狀況來(lái)確定靜態(tài)資源是否合并,頁(yè)面響應(yīng)速度的提高程度有限,且無(wú)法確保響應(yīng)給客戶端的內(nèi)容為最新的內(nèi)容。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種靜態(tài)資源請(qǐng)求的方法及系統(tǒng),能夠合并靜態(tài)資源,并且以路徑的形式查找合并后的靜態(tài)資源,有效減少請(qǐng)求連接數(shù)量、提高頁(yè)面響應(yīng)速度。
為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:
一種靜態(tài)資源請(qǐng)求的方法,包括:
服務(wù)端根據(jù)預(yù)設(shè)的選取規(guī)則選取至少兩個(gè)的靜態(tài)文件;
存儲(chǔ)選取的靜態(tài)文件至預(yù)設(shè)的緩存區(qū)內(nèi);
對(duì)選取的靜態(tài)文件的地址進(jìn)行重組,得到新地址;
關(guān)聯(lián)選取的靜態(tài)文件及對(duì)應(yīng)的新地址;
接收客戶端發(fā)送的請(qǐng)求;
依據(jù)所述請(qǐng)求的地址在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件;
將查找到的靜態(tài)文件發(fā)送至客戶端。
本發(fā)明的有益效果在于:服務(wù)端選取一些靜態(tài)文件并緩存,再生成一個(gè)新地址與選取的靜態(tài)文件關(guān)聯(lián),則新地址對(duì)應(yīng)的是由選取的靜態(tài)文件合并后的內(nèi)容,因此客戶端發(fā)送請(qǐng)求時(shí),能夠根據(jù)請(qǐng)求的地址在緩存區(qū)內(nèi)查找對(duì)應(yīng)的合并后的靜態(tài)文件,減少了請(qǐng)求鏈接數(shù)量,提高了頁(yè)面響應(yīng)速度。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例的靜態(tài)資源請(qǐng)求的方法的流程示意圖;
圖2為本發(fā)明實(shí)施例一的靜態(tài)資源請(qǐng)求的方法的流程示意圖。
具體實(shí)施方式
為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖予以說(shuō)明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:服務(wù)端選取靜態(tài)文件,并將選取的靜態(tài)文件存儲(chǔ)至預(yù)設(shè)的緩存區(qū)內(nèi);對(duì)選取的靜態(tài)文件的地址進(jìn)行重組,得到新地址;關(guān)聯(lián)選取的靜態(tài)文件及對(duì)應(yīng)的新地址。
請(qǐng)參照?qǐng)D1,本發(fā)明提供:
一種靜態(tài)資源請(qǐng)求的方法,包括:
服務(wù)端根據(jù)預(yù)設(shè)的選取規(guī)則選取至少兩個(gè)的靜態(tài)文件;
存儲(chǔ)選取的靜態(tài)文件至預(yù)設(shè)的緩存區(qū)內(nèi);
對(duì)選取的靜態(tài)文件的地址進(jìn)行重組,得到新地址;
關(guān)聯(lián)選取的靜態(tài)文件及對(duì)應(yīng)的新地址;
接收客戶端發(fā)送的請(qǐng)求;
依據(jù)所述請(qǐng)求的地址在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件;
將查找到的靜態(tài)文件發(fā)送至客戶端。
從上述描述可知,服務(wù)端對(duì)靜態(tài)文件進(jìn)行選取和緩存,并生成與選取的靜態(tài)文件對(duì)應(yīng)的新地址,因此客戶端發(fā)送請(qǐng)求時(shí),能夠根據(jù)請(qǐng)求的新地址在緩存區(qū)內(nèi)查找對(duì)應(yīng)的之前服務(wù)端選取的靜態(tài)文件,減少了請(qǐng)求鏈接數(shù)量,提高了頁(yè)面響應(yīng)速度。
進(jìn)一步的,接收客戶端發(fā)送的請(qǐng)求之后,依據(jù)所述請(qǐng)求的地址在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件之前,還包括讀取服務(wù)端內(nèi)所有靜態(tài)文件的最新修改時(shí)間;依據(jù)所述請(qǐng)求的地址在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件具體包括:
根據(jù)所述最新修改時(shí)間和所述請(qǐng)求的地址進(jìn)行計(jì)算,生成字符串;
依據(jù)所述字符串在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件。
從上述描述可知,根據(jù)上述最新修改時(shí)間和請(qǐng)求的地址進(jìn)行計(jì)算,生成的字符串能夠指向最新修改的靜態(tài)文件,確保查找到的靜態(tài)文件都是最新的。
進(jìn)一步的,依據(jù)所述字符串在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件之后,進(jìn)一步包括:
若在緩存區(qū)內(nèi)未查找到對(duì)應(yīng)的靜態(tài)文件,則批量組合服務(wù)端內(nèi)的靜態(tài)文件;
將批量組合的靜態(tài)文件存儲(chǔ)至緩存區(qū);
將批量組合的靜態(tài)文件與所述字符串關(guān)聯(lián);
將批量組合的靜態(tài)文件發(fā)送至客戶端。
從上述描述可知,若依據(jù)所述字符串在緩存區(qū)內(nèi)查找到對(duì)應(yīng)的靜態(tài)文件,則說(shuō)明請(qǐng)求的地址為服務(wù)端進(jìn)行重組得到的新地址,若依據(jù)所述字符串在緩存區(qū)內(nèi)未查找到對(duì)應(yīng)的靜態(tài)文件,則說(shuō)明請(qǐng)求的內(nèi)容之前未被服務(wù)端進(jìn)行、緩存及生成新地址,因此,需對(duì)服務(wù)端內(nèi)的靜態(tài)文件進(jìn)行批量組合后再返回客戶端,而不能直接從緩存器獲?。涣硗?,將批量組合的后的靜態(tài)文件存儲(chǔ)至緩存區(qū),并與所述字符串關(guān)聯(lián),則該批量組合后的靜態(tài)文件與所述字符串對(duì)應(yīng),下一次請(qǐng)求時(shí)即可直接在緩存區(qū)內(nèi)查找到對(duì)應(yīng)的靜態(tài)文件。
進(jìn)一步的,服務(wù)端根據(jù)預(yù)設(shè)的選取規(guī)則選取靜態(tài)文件之前,進(jìn)一步包括:
服務(wù)端配置請(qǐng)求規(guī)則、文件目錄和緩存區(qū),所述請(qǐng)求規(guī)則用于添加所述新地址,所述文件目錄用于存儲(chǔ)服務(wù)端內(nèi)所有的靜態(tài)文件,所述緩存區(qū)用于存儲(chǔ)選取的靜態(tài)文件。
進(jìn)一步的,關(guān)聯(lián)選取的靜態(tài)文件及對(duì)應(yīng)的新地址之后,接收客戶端發(fā)送的請(qǐng)求之前,進(jìn)一步包括:
將生成的新地址發(fā)送至客戶端。
從上述描述可知,客戶端獲取到生成的新地址后,即可使用新地址請(qǐng)求對(duì)應(yīng)的靜態(tài)文件。
進(jìn)一步的,所述緩存區(qū)為分布式key/value數(shù)據(jù)庫(kù)。
從上述描述可知,緩存區(qū)可以采用普通文件系統(tǒng),也可以采用上述分布式key/value數(shù)據(jù)庫(kù)。
進(jìn)一步的,采用gzip或deflate的方式對(duì)緩存區(qū)內(nèi)的靜態(tài)文件進(jìn)行壓縮,并存儲(chǔ)壓縮后的靜態(tài)文件。
從上述描述可知,緩存區(qū)內(nèi)的靜態(tài)文件為匹配客戶端的壓縮格式,能夠有效提高靜態(tài)文件的傳輸效率。
進(jìn)一步的,對(duì)選取的靜態(tài)文件的地址進(jìn)行重組之前,還包括:預(yù)設(shè)地址重組規(guī)則;對(duì)選取的靜態(tài)文件的地址進(jìn)行重組,得到新地址具體為:依據(jù)所述地址重組規(guī)則對(duì)選取的靜態(tài)文件的地址進(jìn)行重組,得到新地址。
從上述描述可知,通過(guò)預(yù)設(shè)地址重組規(guī)則,則可以根據(jù)地址重組自動(dòng)對(duì)選取的靜態(tài)文件進(jìn)行地址重組,得到新地址,如地址重組規(guī)則為將各靜態(tài)文件的地址和最新修改時(shí)間進(jìn)行簡(jiǎn)單加和,靜態(tài)文件1的地址為d1,靜態(tài)文件2的地址為d2,則使用地址重組規(guī)則對(duì)選取的靜態(tài)文件1和靜態(tài)文件2的進(jìn)行地址重組為d1d2。除了簡(jiǎn)單的加和方式,也可以使用現(xiàn)有的其他地址重組規(guī)則。
請(qǐng)參照?qǐng)D2,本發(fā)明的實(shí)施例一為:
一種靜態(tài)資源請(qǐng)求的方法,包括:
服務(wù)端配置請(qǐng)求規(guī)則、文件目錄和緩存區(qū),以及預(yù)設(shè)地址重組規(guī)則;所述請(qǐng)求規(guī)則用于添加所述新地址,所述文件目錄用于存儲(chǔ)服務(wù)端內(nèi)所有的靜態(tài)文件,所述緩存區(qū)用于存儲(chǔ)選取的靜態(tài)文件;具體的,所述緩存區(qū)為分布式key/value數(shù)據(jù)庫(kù);
服務(wù)端根據(jù)預(yù)設(shè)的選取規(guī)則在html文件中選取多個(gè)靜態(tài)文件;
采用支持客戶端的gzip或deflate壓縮算法對(duì)選取的靜態(tài)文件進(jìn)行合并壓縮,并存儲(chǔ)壓縮后的靜態(tài)文件;
依據(jù)所述地址重組規(guī)則對(duì)選取的靜態(tài)文件的地址進(jìn)行重組,得到新地址;將所述新地址添加至所述請(qǐng)求規(guī)則;
關(guān)聯(lián)選取的靜態(tài)文件及對(duì)應(yīng)的新地址;具體的,將新地址作為鍵,選取的靜態(tài)文件作為值;上述過(guò)程中,每次選取的靜態(tài)文件的數(shù)量為多個(gè),每選取一次靜態(tài)文件,則對(duì)應(yīng)得到一個(gè)新地址;
將得到的新地址發(fā)送至各客戶端;
接收客戶端發(fā)送的請(qǐng)求;所述請(qǐng)求為地址請(qǐng)求;
讀取服務(wù)端內(nèi)所有靜態(tài)文件的最新修改時(shí)間;
對(duì)所述最新修改時(shí)間和所述請(qǐng)求的地址進(jìn)行md5計(jì)算,生成字符串;
將所述字符串作為鍵,在緩存區(qū)內(nèi)查找對(duì)應(yīng)的靜態(tài)文件;
若在緩存區(qū)內(nèi)查找到對(duì)應(yīng)的靜態(tài)文件,則將查找到的靜態(tài)文件發(fā)送至客戶端;
若在緩存區(qū)內(nèi)未查找到對(duì)應(yīng)的靜態(tài)文件,則批量組合服務(wù)端內(nèi)的靜態(tài)文件;將批量組合的靜態(tài)文件存儲(chǔ)至緩存區(qū);將所述字符串作為鍵,批量組合后的靜態(tài)文件作為值;將批量組合的靜態(tài)文件發(fā)送至客戶端。
下面是上述實(shí)施例的一個(gè)具體應(yīng)用場(chǎng)景:
服務(wù)端從html文件中選取靜態(tài)文件1(地址為d1)、靜態(tài)文件2(地址為d2)和靜態(tài)文件3(地址為d3),對(duì)靜態(tài)文件1、靜態(tài)文件2和靜態(tài)文件3合并壓縮,并存儲(chǔ)至緩存區(qū),對(duì)d1、d2和d3進(jìn)行重組得到地址d1d2d3,將d1d2d3作為鍵,緩存區(qū)中靜態(tài)文件1、靜態(tài)文件2和靜態(tài)文件3合并壓縮后的內(nèi)容作為值;同理,選取出其他的多組靜態(tài)文件,壓縮并存儲(chǔ)至緩存區(qū),以及分別與對(duì)應(yīng)的新地址關(guān)聯(lián)(如d4d5為鍵,緩存區(qū)內(nèi)靜態(tài)文件4和靜態(tài)文件5合并壓縮后的內(nèi)容作為值)。
客戶端向服務(wù)端發(fā)送地址請(qǐng)求,讀取服務(wù)端內(nèi)所有靜態(tài)文件的最新修改時(shí)間,對(duì)最新修改時(shí)間和所述請(qǐng)求的地址進(jìn)行md5計(jì)算,生成字符串,假設(shè)該字符串為d1d2d3,則將d1d2d3,以d1d2d3為鍵,查找緩存區(qū)中的靜態(tài)文件,將查找到的靜態(tài)文件1、靜態(tài)文件2和靜態(tài)文件3合并壓縮后的內(nèi)容發(fā)送至客戶端;若該字符串為d8d9,而緩存區(qū)內(nèi)未找到對(duì)應(yīng)的內(nèi)容,則說(shuō)明之前服務(wù)端并未選取靜態(tài)文件8和靜態(tài)文件9,因此直接在html文件中查找靜態(tài)文件8和靜態(tài)文件9,將靜態(tài)文件8和靜態(tài)文件9合并壓縮后存儲(chǔ)至緩存區(qū),并將d8d9作為鍵,靜態(tài)文件8和靜態(tài)文件9合并壓縮后的內(nèi)容作為值,以及將靜態(tài)文件8和靜態(tài)文件9合并壓縮后的內(nèi)容發(fā)送至客戶端。下次客戶端發(fā)送地址為d8d9的地址請(qǐng)求時(shí),則直接將緩存區(qū)內(nèi)靜態(tài)文件8和靜態(tài)文件9合并壓縮后的內(nèi)容返回至客戶端即可。
綜上所述,本發(fā)明提供的靜態(tài)資源請(qǐng)求的方法,對(duì)靜態(tài)資源進(jìn)行選取、合并,以及生產(chǎn)對(duì)應(yīng)的新地址,新地址對(duì)應(yīng)多個(gè)合并的靜態(tài)文件,從而減少了請(qǐng)求連接數(shù),提高靜態(tài)資源的并發(fā)請(qǐng)求數(shù),進(jìn)而提高了頁(yè)面響應(yīng)速度。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。