所述服務(wù)器端包含指令進(jìn)行處理,并向所述輸出流實現(xiàn)類寫入處理后的響應(yīng)數(shù)據(jù)。
[0033]檢測寫入數(shù)據(jù)是否包括SSI指令的過程,是對寫入到響應(yīng)中的每段數(shù)據(jù)進(jìn)行檢查,如果寫入的該段數(shù)據(jù)與SSI指令能夠匹配上,說明這段數(shù)據(jù)就是一段SSI指令,就對該SSI指令進(jìn)行解析處理,把解析獲得的數(shù)據(jù)寫入到響應(yīng)中,然后在進(jìn)行后續(xù)數(shù)據(jù)匹配;如果匹配不到SSI指令,則說明要寫入的數(shù)據(jù)就是普通的數(shù)據(jù),直接寫入到響應(yīng)中即可。
[0034]篩選出SSI指令后,每一個SSI指令都對應(yīng)著一個處理方法。例如contain指令,如果篩選到contain指令后,則會根據(jù)該指令里邊配置的文件路徑,去緩存中查找該文件路徑對應(yīng)的文件內(nèi)容,然后將查找到的文件內(nèi)容替換掉篩選到SSI指令,則該指令的處理完成。整個SSI指令篩選和處理過程與向響應(yīng)中寫入數(shù)據(jù)的過程是同時進(jìn)行的。
[0035]步驟S13:將所寫入的響應(yīng)數(shù)據(jù)返回瀏覽器。
[0036]以上各步驟組成的服務(wù)器端包含技術(shù)改進(jìn)的方法的流程圖如圖2所示。
[0037]根據(jù)本發(fā)明的服務(wù)器端包含技術(shù)改進(jìn)的方法可以看出,通過在對響應(yīng)攔截前的判斷,從而能避免不必要的處理工作,提高服務(wù)器端返回響應(yīng)的效率;通過將服務(wù)器響應(yīng)攔截,創(chuàng)建包裝類進(jìn)行封裝,并通過重寫的方法,向自定義的輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù),從而能夠在向輸出流實現(xiàn)類寫入數(shù)據(jù)的過程中檢測SSI指令,并將SSI指令的對應(yīng)內(nèi)容替換到響應(yīng)數(shù)據(jù)中,從而能夠?qū)崿F(xiàn)無需復(fù)制響應(yīng)數(shù)據(jù)就能處理SSI指令,提高使用SSI技術(shù)的網(wǎng)站的并發(fā)性能,并且當(dāng)網(wǎng)站有大并發(fā)時,不會產(chǎn)生大量垃圾對象,避免內(nèi)存溢出。
[0038]圖3是根據(jù)本發(fā)明實施例的服務(wù)器端包含技術(shù)改進(jìn)的裝置的主要模塊示意圖。
[0039]如圖3所示,本發(fā)明實施例的服務(wù)器端包含技術(shù)改進(jìn)的裝置30主要包括封裝模塊301、寫入模塊302、返回模塊303。
[0040]封裝模塊301用于創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝,并在所述包裝類中自定義輸出流實現(xiàn)類;寫入模塊302用于向所述輸出流實現(xiàn)類中寫入響應(yīng)數(shù)據(jù);返回模塊303用于將所寫入的響應(yīng)數(shù)據(jù)返回瀏覽器,其中寫入模塊302還用于:在向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)的過程中,遍歷檢測響應(yīng)數(shù)據(jù)是否包括服務(wù)器端包含指令,若包括,則對所述服務(wù)器端包含指令進(jìn)行處理,并向所述輸出流實現(xiàn)類寫入處理后的響應(yīng)數(shù)據(jù);若不包括,則直接向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)。
[0041]其中,封裝模塊301還用于在創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝之前,判斷對服務(wù)器的響應(yīng)是否進(jìn)行攔截,若攔截,則攔截并進(jìn)行封裝,若不攔截,則直接向瀏覽器返回響應(yīng)。
[0042]封裝模塊301還用于根據(jù)瀏覽器發(fā)送請求的請求路徑判斷是否攔截,按照預(yù)設(shè)規(guī)則設(shè)定攔截路徑名單,若所述請求的請求路徑與所述攔截路徑名單中的數(shù)據(jù)匹配成功,則對服務(wù)器針對所述請求做出的響應(yīng)進(jìn)行攔截;若所述請求的請求路徑與所述攔截路徑名單中的數(shù)據(jù)匹配不成功,則將服務(wù)器的響應(yīng)直接返回瀏覽器。
[0043]寫入模塊302還用于解析檢測到的服務(wù)器端包含指令,加載對應(yīng)內(nèi)容對服務(wù)器端包含指令進(jìn)行替換。
[0044]從以上描述可以看出,通過在對響應(yīng)攔截前的判斷,從而能避免不必要的處理工作,提高服務(wù)器端返回響應(yīng)的效率;通過將服務(wù)器響應(yīng)攔截,創(chuàng)建包裝類進(jìn)行封裝,并通過重寫的方法,向自定義的輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù),從而能夠在向輸出流實現(xiàn)類寫入數(shù)據(jù)的過程中檢測SSI指令,并將SSI指令的對應(yīng)內(nèi)容替換到響應(yīng)數(shù)據(jù)中,從而能夠?qū)崿F(xiàn)無需復(fù)制響應(yīng)數(shù)據(jù)就能處理SSI指令,提高使用SSI技術(shù)的網(wǎng)站的并發(fā)性能,并且當(dāng)網(wǎng)站有大并發(fā)時,不會產(chǎn)生大量垃圾對象,避免內(nèi)存溢出。
[0045]上述【具體實施方式】,并不構(gòu)成對本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種服務(wù)器端包含技術(shù)改進(jìn)的方法,其特征在于,包括: 創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝,并在所述包裝類中自定義輸出流實現(xiàn)類; 向所述輸出流實現(xiàn)類中寫入響應(yīng)數(shù)據(jù); 將所寫入的響應(yīng)數(shù)據(jù)返回瀏覽器, 其中向所述輸出流實現(xiàn)類中寫入響應(yīng)數(shù)據(jù)還包括: 在向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)的過程中,遍歷檢測響應(yīng)數(shù)據(jù)是否包括服務(wù)器端包含指令,若包括,則對所述服務(wù)器端包含指令進(jìn)行處理,并向所述輸出流實現(xiàn)類寫入處理后的響應(yīng)數(shù)據(jù);若不包括,則直接向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:在創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝之前,判斷對服務(wù)器的響應(yīng)是否進(jìn)行攔截,若攔截,則攔截并進(jìn)行封裝,若不攔截,則直接向瀏覽器返回響應(yīng)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,判斷對服務(wù)器的響應(yīng)是否進(jìn)行攔截包括: 根據(jù)瀏覽器發(fā)送請求的請求路徑判斷是否攔截,按照預(yù)設(shè)規(guī)則設(shè)定攔截路徑名單,若所述請求的請求路徑與所述攔截路徑名單中的數(shù)據(jù)匹配成功,則對服務(wù)器針對所述請求做出的響應(yīng)進(jìn)行攔截; 若所述請求的請求路徑與所述攔截路徑名單中的數(shù)據(jù)匹配不成功,則將服務(wù)器的響應(yīng)直接返回瀏覽器。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,對所述服務(wù)器端包含指令進(jìn)行處理包括: 解析檢測到的服務(wù)器端包含指令,加載對應(yīng)內(nèi)容對服務(wù)器端包含指令進(jìn)行替換。5.一種服務(wù)器端包含技術(shù)改進(jìn)的裝置,其特征在于,包括: 封裝模塊,用于創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝,并在所述包裝類中自定義輸出流實現(xiàn)類; 寫入模塊,用于向所述輸出流實現(xiàn)類中寫入響應(yīng)數(shù)據(jù); 返回模塊,用于將所寫入的響應(yīng)數(shù)據(jù)返回瀏覽器, 其中寫入模塊還用于: 在向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)的過程中,遍歷檢測響應(yīng)數(shù)據(jù)是否包括服務(wù)器端包含指令,若包括,則對所述服務(wù)器端包含指令進(jìn)行處理,并向所述輸出流實現(xiàn)類寫入處理后的響應(yīng)數(shù)據(jù);若不包括,則直接向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)。6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述封裝模塊還用于:在創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝之前,判斷對服務(wù)器的響應(yīng)是否進(jìn)行攔截,若攔截,則攔截并進(jìn)行封裝,若不攔截,則直接向瀏覽器返回響應(yīng)。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述封裝模塊還用于: 根據(jù)瀏覽器發(fā)送請求的請求路徑判斷是否攔截,按照預(yù)設(shè)規(guī)則設(shè)定攔截路徑名單,若所述請求的請求路徑與所述攔截路徑名單中的數(shù)據(jù)匹配成功,則對服務(wù)器針對所述請求做出的響應(yīng)進(jìn)行攔截; 若所述請求的請求路徑與所述攔截路徑名單中的數(shù)據(jù)匹配不成功,則將服務(wù)器的響應(yīng)直接返回瀏覽器。8.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述寫入模塊還用于: 解析檢測到的服務(wù)器端包含指令,加載對應(yīng)內(nèi)容對服務(wù)器端包含指令進(jìn)行替換。
【專利摘要】本發(fā)明提供一種服務(wù)器端包含技術(shù)改進(jìn)的方法和裝置,能夠省去對響應(yīng)數(shù)據(jù)的內(nèi)存復(fù)制操作,從而提高使用tomcat中的SSI技術(shù)時的網(wǎng)頁加載速度,并且在有大并發(fā)訪問時避免產(chǎn)生大量的垃圾對象影響系統(tǒng)性能。該方法包括:創(chuàng)建包裝類對服務(wù)器的響應(yīng)進(jìn)行封裝,并在所述包裝類中自定義輸出流實現(xiàn)類;向所述輸出流實現(xiàn)類中寫入響應(yīng)數(shù)據(jù);將所寫入的響應(yīng)數(shù)據(jù)返回瀏覽器,其中向所述輸出流實現(xiàn)類中寫入響應(yīng)數(shù)據(jù)還包括:在向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)的過程中,遍歷檢測響應(yīng)數(shù)據(jù)是否包括服務(wù)器端包含指令,若包括,則對所述服務(wù)器端包含指令進(jìn)行處理,并向所述輸出流實現(xiàn)類寫入處理后的響應(yīng)數(shù)據(jù);若不包括,則直接向所述輸出流實現(xiàn)類寫入響應(yīng)數(shù)據(jù)。
【IPC分類】G06F9/445
【公開號】CN105278984
【申請?zhí)枴緾N201510579405
【發(fā)明人】曹志飛
【申請人】北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司
【公開日】2016年1月27日
【申請日】2015年9月14日