国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于isapi的web靜態(tài)頁面生成方法

      文檔序號:6572780閱讀:203來源:國知局
      專利名稱:一種基于isapi的web靜態(tài)頁面生成方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種基于ISAPI的WEB靜態(tài)頁面生成方法,可實現(xiàn)通過將使用各 種動態(tài)頁面技術(shù)開發(fā)的動態(tài)頁面產(chǎn)生靜態(tài)頁面進行緩存,利用靜態(tài)頁面緩存為用 戶提供WEB頁面訪問的服務(wù)從而避免每次用戶請求都需要耗用大量資源來生成 WEB頁面,另外本方法還可以靈活設(shè)置緩存超時策略進行緩存更新,從而解決純 靜態(tài)頁面人工動態(tài)更新困難的問題,本方法屬于互聯(lián)網(wǎng)服務(wù)技術(shù)領(lǐng)i或
      背景技術(shù)
      隨著全世界因特網(wǎng)的不斷發(fā)展,采用HTTP協(xié)議的WEB網(wǎng)站如雨后春筍,遍 布到了世界的每個角落。WEB技術(shù)從最初的簡單的全靜態(tài)頁面發(fā)展到今天能夠用 各種開發(fā)語言(如JSP, ASP, ASP.NET等)方便靈活快速地進行開發(fā),但是動態(tài)頁 面雖然提供了非常強大的與用戶的交互性,但是同時帶來了每次都需要動態(tài)生成 頁面引起的資源消耗大的問題。作為一個大型的門戶網(wǎng)站,如果完全由動態(tài)頁面 為用戶提供服務(wù),則勢必需要投入大量的資金來解決服務(wù)器的性能問題。而作為 門戶網(wǎng)站,往往很多WEB網(wǎng)頁是相對靜態(tài)的,也就是說在相對較長的時間內(nèi)(如 一個小時或者幾個小時以內(nèi))是幾乎不變化的。這樣,我們完全沒有必要每次在 用戶有請求的時候從頭到尾來生成一遍,而是可以采用某種智能的緩存技術(shù)來解 決這個問題。
      有些用來進行動態(tài)WEB頁面開發(fā)的語言本身就提供了這方面的緩存技術(shù),如 微軟從ASP. NET1. 0版本開始就提供了方便靈活的頁面緩存和數(shù)據(jù)緩存技術(shù)來提 高系統(tǒng)的性能。但是很多動態(tài)WEB頁面開發(fā)語言卻沒有提供此類的功能,即使有, 也沒有一種通用的能夠應用于所有動態(tài)WEB頁面開發(fā)語言的緩存技術(shù)。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種通用的能夠應用于不同動態(tài)頁面開發(fā)技術(shù)語言的 緩存技術(shù),降低開發(fā)人員為解決動態(tài)頁面性能問題采用各種緩存技術(shù)而引起的復 雜程度的基于ISAPI的WEB靜態(tài)頁面生成方法。
      為實現(xiàn)以上目的,本發(fā)明的技術(shù)方案是提供一種基于ISAPI的WEB靜態(tài)頁面 生成方法,其特征在于,在IIS 6. 0上面采用0++語言進行ISAPI開發(fā),制作一 個加載在WEB BROWSER(網(wǎng)頁訪問瀏覽器)與動態(tài)頁面生成語言之間的靜態(tài)頁面插 件,從而能夠截獲從WEB BROWSER發(fā)送到動態(tài)頁面生成語言的所有請求并進行處 理,其方法為-第一步.在IIS 6. 0上面釆用〔++語言進行ISAPI開發(fā),制作一個加載在網(wǎng)頁訪問瀏覽器WEB BROWSER與動態(tài)頁面生成語言之間的靜態(tài)頁面插件; 第二步.網(wǎng)頁訪問瀏覽器WEB服OWER向IIS發(fā)起一個頁面GET訪問請求; 第三步.IIS將得到的請求通知靜態(tài)頁面插件,采用HTTP 1.1協(xié)議的頭部Host字段分離用戶對靜態(tài)頁面訪問的請求,對不同站點建立不同的靜態(tài)頁面 目錄,從而同時提供多站點訪問的支持,同時又與源WEB站點目錄分離; 第四步.靜態(tài)頁面插件獲得GET訪問請求的頁面相對路徑并與配置文件中設(shè)置 的需要生成靜態(tài)頁面的相對路徑地址列表進行匹配,如果匹配成功,則 說明本次請求是受控請求,并轉(zhuǎn)到第6步驟進行處理,否則轉(zhuǎn)第5步驟 進行處理;第五步.靜態(tài)頁面插件交出請求的繼續(xù)處理權(quán),由相應的動態(tài)頁面生成語言進行 處理,并向用戶響應并生成的最終頁面,然后轉(zhuǎn)第十步驟;第六步.根據(jù)用戶請求的URL的相對路徑和querystring部分,以及當前時刻, 計算得到當前的緩沖區(qū)對應的靜態(tài)頁面文件的文件物理路徑,計算方法 如下將步驟3分離得到的靜態(tài)頁面根目錄加上相對路徑加上采用HTTP 1. 1協(xié)議的querystring部分計算MD5得到的32位數(shù)字摘要加上當前緩 沖區(qū)號作為文件名,如果用戶的HTTP請求頭中顯示支持壓縮傳輸,則獲 取對相同頁面不同querystring的頁面訪問的支持的壓縮版本的靜態(tài)頁 面文件,壓縮版本和非壓縮版本的靜態(tài)頁面文件的文件名相同,擴展名 不同;第七步.如果用戶所請求的URL對應的響應頁面已經(jīng)在靜態(tài)頁面緩沖中存在并且 沒有過期,則從緩存中讀取響應頁面并發(fā)送給用戶,然后轉(zhuǎn)第十步驟。 否則執(zhí)行第8步驟;
      第八步.執(zhí)行生成靜態(tài)頁面文件流程并轉(zhuǎn)第十步驟;第九步.執(zhí)行獲取靜態(tài)頁面文件流程,并存儲到靜態(tài)頁面緩存中,并將緩存的響應內(nèi)容發(fā)送給用戶; 第十步.結(jié)束。執(zhí)行生成靜態(tài)頁面流程為 第一步.首先將用戶的請求路由到源站點動態(tài)頁面生成語言進行處理,以便生成 新的響應內(nèi)容;第二步.源站點動態(tài)頁面生成語言處理完畢后向用戶發(fā)送響應內(nèi)容; 第三步.靜態(tài)頁面插件捕獲到響應的內(nèi)容,并計算過期緩沖區(qū)的靜態(tài)頁面文件的 物理地址,采用的計算方法和前面整體流程中的第二步驟計算方式一致, 只是緩沖區(qū)采用過期緩沖區(qū)的緩沖區(qū)號。得到靜態(tài)頁面文件物理地址后 將靜態(tài)頁面文件打開并進行寫鎖定; 第四步.如果加鎖失敗,則轉(zhuǎn)第7步驟;第五步.將截獲到的響應內(nèi)容寫入靜態(tài)頁面文件中,同時生成壓縮版本的靜態(tài)頁 面文件;第六步.執(zhí)行緩沖區(qū)切換操作,將過期緩沖器變成當前緩沖區(qū); 第七步.向用戶發(fā)送響應內(nèi)容; 第八步.結(jié)束。讀取靜態(tài)頁面流程第一步.根據(jù)用戶的HTTP請求頭判斷用戶的瀏覽器是否支持壓縮傳輸,并計算得 到當前緩沖區(qū)對應的靜態(tài)頁面文件的物理路徑,計算物理路徑的方法參 見整體流程的第2步驟。然后打開該文件并加讀鎖;第二步.如果加鎖成功,轉(zhuǎn)第5步驟;第三步.計算得到舊緩沖區(qū)對應的靜態(tài)頁面文件的物理路徑,然后打開該文件并 加讀鎖;第四步.如果加鎖不成功,則向用戶發(fā)送緩沖區(qū)錯誤信息轉(zhuǎn)第6步驟; 第五步.從打開壓縮的或者非壓縮的的靜態(tài)頁面文件中讀取響應內(nèi)容,并發(fā)送給 用戶;
      第六步.結(jié)束。在實際實施過程中,尚且存在幾個需要解決的問題1. 同一個動態(tài)WEB頁面,往往會根據(jù)不同的querystring部分產(chǎn)生甚至完全不 同的響應頁面,需要解決根據(jù)querystring的不同產(chǎn)生不同靜態(tài)頁面的版本。2. 由于IIS中的插件可以根據(jù)需要設(shè)置為全局范圍(即包括本沐EB服務(wù)器上的 所有站點),或者設(shè)置只針對某個WEB站點。因此,本方法需要對多站點提 供支持。3. 根據(jù)HTTP 1. 1協(xié)議規(guī)范支持對頁面進行壓縮方式傳輸從而有效壓縮網(wǎng)絡(luò)流 量,因此我們在靜態(tài)頁面基礎(chǔ)上可以增加一個壓縮功能來降低網(wǎng)絡(luò)流量。4. 一個WEB網(wǎng)站一般都會面臨大量并發(fā)訪問的情況,如何解決正在生成靜態(tài)頁 面的時候,同時又有用戶訪問同一個版本的頁面的并發(fā)讀寫問題或者并發(fā)寫 寫問題。根據(jù)第一個和第二個問題,首先需要解決的問題是怎么來存放生成的靜態(tài)頁 面。以前有些靜態(tài)頁面生成程序的做法是和源WEB站點存放在同一個文件夾內(nèi), 這樣會導致源WEB站點中產(chǎn)生大量的臨時文件,對該站點的管理產(chǎn)生了不必要的 麻煩。本方法采用徹底分離的方法來解決。IIS中的站點要么綁定了主機頭,要么綁定一個單獨的端口,瀏覽器等客戶 端工具訪問IIS中的某個站點中的某個頁面的時候,根據(jù)HTTPl. 1協(xié)議規(guī)范,在 請求頭中提供Host字段來聲明訪問的是一個IIS服務(wù)器中的哪個站點,Host和 IIS服務(wù)器中的站點是一一對應的。因此本方法對每個站點單獨建立一個分離于 源站點文件夾的靜態(tài)頁面存放文件夾來存放生成的靜態(tài)頁面文件,并在次文件夾 下面根據(jù)請求的不斷發(fā)生,逐漸創(chuàng)建與源站點目錄結(jié)構(gòu)完全相同的目錄結(jié)構(gòu)來存 放對應的靜態(tài)頁面文件。另外在用戶訪問靜態(tài)頁面的時候,利用請求頭中的Host 字段對用戶的請求進行分離,將用戶的請求映射到不同的站點對應的靜態(tài)頁面文 件夾中。根據(jù)第一個問題,本方法對同一個頁面使用不同的querystring進行訪問產(chǎn) 生不同的版本的靜態(tài)頁面來解決這個問題。但是querystring是一個不定長度的 字符串,可能會超過幾百個字節(jié),而且querystring中本身包含的一些特殊字符 也是不能作為文件名的一部分進行存儲的。因此需要對querystring部分進行一 下處理,本方法采用了 MD5的方法,對querystring做一次數(shù)字摘要,產(chǎn)生一個 固定長度的32位16進制數(shù),作為文件名的一部分保存起來。根據(jù)MD5的算法特 性,不同的querystring產(chǎn)生出來的MD5完全不同,因此可以安全地將計算得到 的數(shù)字摘要用來替換原來的querystring。根據(jù)第三個問題,按照HTTP 1. 1協(xié)議規(guī)范,在各種頁面瀏覽器訪問WEB站 點的時候,在請求頭中會提供是否支持接收壓縮方式傳輸?shù)淖侄巍H绻埱箢^的 該字段聲明允許壓縮則WEB站點可以采用某個壓縮協(xié)議進行壓縮后將響應頁面 發(fā)送給頁面瀏覽器。在HTTP 1. 1協(xié)議規(guī)范中,IANA組織已經(jīng)將gzip作為默認 的HTTP壓縮協(xié)議。在絕大多數(shù)的瀏覽器中都支持gzip方式來進行壓縮。因此本 方法也采用了 gzip方式來提供壓縮。另外在生成靜態(tài)頁面的時候,在保存未壓 縮版本的時候,同時進行壓縮產(chǎn)生一個壓縮版本的靜態(tài)頁面文件,從而使得系統(tǒng) 可以同時支持能夠壓縮方式傳輸和只能進行非壓縮方式傳輸?shù)母鞣N頁面瀏覽器 的訪問。根據(jù)第四個問題,本方法采用三緩沖區(qū)切換的方式來解決這個問題。下面對 三緩沖區(qū)切換的流程進行描述。三個緩沖區(qū)分別為舊緩沖區(qū)、當前緩沖區(qū)、過期 緩沖區(qū),每個緩沖區(qū)對應三個不同版本的靜態(tài)頁面文件。當用戶訪問的當前頁面 已經(jīng)到了超時時間的時候,本方法獲取過期緩沖區(qū),往過期緩沖區(qū)中寫入當前產(chǎn) 生的靜態(tài)頁面文件數(shù)據(jù)。按照一般情況來說,過期緩沖區(qū)沒有讀用戶,只有可能 兩個同時寫的情況發(fā)生,如果當時正好有另外一個線程在往同一個版本的靜態(tài)頁 面文件中寫入數(shù)據(jù),那么寫入前的鎖定操作失敗,將用戶請求直接發(fā)送給用戶, 而本次不再作寫入操作。寫入完成后,將進行一次緩沖區(qū)切換。三個緩沖區(qū)一次 變換身份,舊緩沖區(qū)變?yōu)檫^期緩沖區(qū),過期緩沖區(qū)變?yōu)楫斍熬彌_區(qū),當前緩沖區(qū) 變?yōu)榕f緩沖區(qū)。如此不斷往復循環(huán)。使得寫入操作永遠在已經(jīng)沒有用戶讀的過期 緩沖區(qū)中進行,讀操作永遠在當前緩沖區(qū)或者舊緩沖區(qū)中進行,從而讀操作和寫 操作永遠不會發(fā)生在同一個緩沖區(qū)中,完全可以并行地進行讀寫,極大程度上保 證了高效率的并發(fā)讀寫訪問,從而大大提高了系統(tǒng)的并發(fā)訪問能力。本發(fā)明并將緩存策略的實施放在動態(tài)WEB頁面的部署階段,與開發(fā)階段徹
      底分離開來,從而使得本發(fā)明可以非常方便靈活地在產(chǎn)生性能瓶頸的動態(tài)WEB 頁面網(wǎng)站服務(wù)器上面根據(jù)需要部署,而不需要在開發(fā)階段考慮緩存策略加入一些 額外的與開發(fā)語言相關(guān)的緩存代碼。本發(fā)明的優(yōu)點是降低開發(fā)人員為解決動態(tài)頁面性能問題采用各種緩存技術(shù) 的復雜工作量。


      圖1為一種基于ISAPI的WEB靜態(tài)頁面生成方法程序流程圖;圖2為生成靜態(tài)頁面流程圖;圖3為讀取靜態(tài)頁面流程。
      具體實施方式
      以下結(jié)合附圖和實施例對本發(fā)明作進一步說明。 實施例根據(jù)ISAPI的接口規(guī)范生成一個ISAPI的擴展DLL插件,該插件同時根據(jù) ISAPI的接口規(guī)范實現(xiàn)一個ISAPI篩選器,ISAPI擴展主要用來實現(xiàn)靜態(tài)頁面的 讀取,篩選器則用來實現(xiàn)靜態(tài)頁面的生成,兩者相互配合,完成靜態(tài)頁面的生成 和為用戶訪問提供服務(wù)。DLL插件的入口點函數(shù)DllMain函數(shù)啟動插件的初始化工作,并在此期間 加載靜態(tài)頁面生成策略配置信息到全局配置變量中保存生成靜態(tài)頁面和提供頁 面訪問所需的各種策略。同時啟動一個守護線程,定時啟動靜態(tài)頁面臨時文件刪 除工作,刪除那些超時的靜態(tài)頁面文件,避免緩存的靜態(tài)頁面文件占用太多的硬 盤空間。根據(jù)ISAPI擴展接口規(guī)范,創(chuàng)建輸出函數(shù)GetExtensionVersion, HttpExtensionProc。 GetExtensionVersion為IIS提供擴展器插件的描述信息。 主要邏輯在HUpExtensionProc中實現(xiàn)。HttpExtensionProc實現(xiàn)了靜態(tài)頁面緩 存讀取的過程。實現(xiàn)流程如圖五所示。第一步:用戶開始進行頁面請求,在用戶訪問站點的配置清單中對用戶請求 的URL進行匹配,發(fā)現(xiàn)在受控URL清單中。第二步:根據(jù)用戶請求的URL和querystring部分,以及當前緩沖區(qū)的版本
      號計算得到靜態(tài)頁面文件名。計算方法為文件名=用戶訪問站點對應的物理 路徑+ URL部分+ MD5( querystring ) +緩沖區(qū)版本號+ " tmp"。第三步:打開計算得到的文件名對應的文件并加只讀鎖,如果指定的文件打 開失敗,則獲取舊緩沖區(qū)的靜態(tài)頁面文件名,并再此嘗試打開。如果打開文件失 敗,則直接調(diào)用ServerS叩portFunction函數(shù)的HSE—REQ—EXEC—URL方法,將用 戶請求路由到動態(tài)頁面語言為用戶繼續(xù)提供服務(wù),并轉(zhuǎn)第五步驟結(jié)束。第四步讀取靜態(tài)頁面文件頭,并調(diào)用ServerS叩portFunction的 HSE_REQ—TRANSMIT—FILE方法向用戶發(fā)送緩存在靜態(tài)頁面文件中的內(nèi)容。第五步結(jié)束。另外,根據(jù)ISAPI過濾器接口規(guī)范,創(chuàng)建輸出函數(shù)GetFilterVersion和 HttpFilterProc函數(shù)。GetFilterVersion函數(shù)為IIS提供篩選器插件的描述信 息。主要邏輯在HttpFilterProc中實現(xiàn)。HttpFilterProc實現(xiàn)了靜態(tài)頁面緩存 的生成的過程。實現(xiàn)流程如圖四所示。在HttpFilterProc中捕獲了 ISAPI的 SF_N0TIFY—SEND—RAW—DATA事件,該事件在IIS向用戶發(fā)送響應信息的時候觸發(fā), 在觸發(fā)的時候它會將本次準備發(fā)送給用戶的內(nèi)容緩沖區(qū)作為參數(shù)傳遞給本篩選 器插件,從而使得本插件可以有機會捕獲向用戶發(fā)送的內(nèi)容,并將這些內(nèi)容通過 存入本地靜態(tài)文件緩存下來。為了防止由本插件的HttpExtensionProc向用戶輸 出的在緩存中的靜態(tài)頁面內(nèi)容也被捕獲下來并存入靜態(tài)頁面文件,在生成靜態(tài)頁 面文件的時候,另外在HTTP的響應頭中增加了一個SJLPoweredBy標記字段,這 樣靜態(tài)頁面中存在該字段,在向用戶發(fā)送響應內(nèi)容的時候如果該字段存在內(nèi)容, 則說明是從緩存中讀取內(nèi)容并向用戶發(fā)送響應,不需要再此被緩存,反之則是由 動態(tài)頁面語言生成的響應內(nèi)容,并且需要被緩存下來,生成靜態(tài)頁面。流程如下描述第一步對本次用戶頁面請求,第一次捕獲到SF—NOTIFY—SEND_RAW_DATA 事件,判斷當前緩沖中的HTTP響應頭是否包含SH一PoweredBy標記字段,如果包 含,直接跳轉(zhuǎn)到第六步驟結(jié)束。否則執(zhí)行第二步驟。第二步根據(jù)請求的URL和當前的緩沖區(qū)版本計算得到目標靜態(tài)頁面文件 名,計算方法參見同讀取流程的計算方法。創(chuàng)建或者打開靜態(tài)頁面文件,將HTTP
      響應頭寫入到文件中,并增加一個SH—PoweredBy標記字段。第三步如果本緩沖區(qū)中尚未包含所有的響應內(nèi)容,則繼續(xù)等待SF_N0TIFY—SEND—RAW_DATA的觸發(fā)。否則轉(zhuǎn)第五步驟。第四步捕捉到非第一次SF—NOTIFY—SEND—RAW—DATA事件,將響應緩沖區(qū) 中的內(nèi)容寫入到靜態(tài)文件中。如果己經(jīng)接收到本次響應的所有內(nèi)容,則轉(zhuǎn)第五步 驟,否則重復第四步驟。第五步關(guān)閉當前的靜態(tài)頁面文件,并生成一個壓縮的靜態(tài)頁面文件,進 行緩沖區(qū)切換,轉(zhuǎn)結(jié)束。第六步結(jié)束。
      權(quán)利要求
      1.一種基于ISAPI的WEB靜態(tài)頁面生成方法,其特征在于,在IIS 6.0上面采用C++語言進行ISAPI開發(fā),制作一個加載在網(wǎng)頁訪問瀏覽器WEB BROWSER與動態(tài)頁面生成語言之間的靜態(tài)頁面插件,從而能夠截獲從WEB BROWSER發(fā)送到動態(tài)頁面生成語言的所有請求并進行處理,其方法為第一步.在IIS 6.0上面采用C++語言進行ISAPI開發(fā),制作一個加載在網(wǎng)頁訪問瀏覽器WEB BROWSER與動態(tài)頁面生成語言之間的靜態(tài)頁面插件;第二步.網(wǎng)頁訪問瀏覽器WEB BROWER向IIS發(fā)起一個頁面GET訪問請求;第三步.IIS將得到的請求通知靜態(tài)頁面插件,采用HTTP 1.1協(xié)議的頭部Host字段分離用戶對靜態(tài)頁面訪問的請求,對不同站點建立不同的靜態(tài)頁面目錄,從而同時提供多站點訪問的支持,同時又與源WEB站點目錄分離;第四步.靜態(tài)頁面插件獲得GET訪問請求的頁面相對路徑并與配置文件中設(shè)置的需要生成靜態(tài)頁面的相對路徑地址列表進行匹配,如果匹配成功,則說明本次請求是受控請求,并轉(zhuǎn)到第6步驟進行處理,否則轉(zhuǎn)第5步驟進行處理;第五步.靜態(tài)頁面插件交出請求的繼續(xù)處理權(quán),由相應的動態(tài)頁面生成語言進行處理,并向用戶響應并生成的最終頁面,然后轉(zhuǎn)第十步驟;第六步.根據(jù)用戶請求的URL的相對路徑和querystring部分,以及當前時刻,計算得到當前的緩沖區(qū)對應的靜態(tài)頁面文件的文件物理路徑,計算方法如下將步驟3分離得到的靜態(tài)頁面根目錄加上相對路徑加上采用HTTP1.1協(xié)議的querystring部分計算MD5得到的32位數(shù)字摘要加上當前緩沖區(qū)號作為文件名,如果用戶的HTTP請求頭中顯示支持壓縮傳輸,則獲取對相同頁面不同querystring的頁面訪問的支持的壓縮版本的靜態(tài)頁面文件,壓縮版本和非壓縮版本的靜態(tài)頁面文件的文件名相同,擴展名不同;第七步.如果用戶所請求的URL對應的響應頁面已經(jīng)在靜態(tài)頁面緩沖中存在并且沒有過期,則從緩存中讀取響應頁面并發(fā)送給用戶,然后轉(zhuǎn)第十步驟。否則執(zhí)行第8步驟;第八步.執(zhí)行生成靜態(tài)頁面文件流程并轉(zhuǎn)第十步驟;第九步.執(zhí)行讀取靜態(tài)頁面文件流程,并存儲到靜態(tài)頁面緩存中,并將緩存的響應內(nèi)容發(fā)送給用戶;第十步.結(jié)束。
      2. 根據(jù)權(quán)利要求1所述的一種基于ISAPI的WEB靜態(tài)頁面生成方法,其特征在 于,執(zhí)行生成靜態(tài)頁面流程為-第一步.首先將用戶的請求路由到源站點動態(tài)頁面生成語言進行處理,以便生成 新的響應內(nèi)容;第二步.源站點動態(tài)頁面生成語言處理完畢后向用戶發(fā)送響應內(nèi)容; 第三步.靜態(tài)頁面插件捕獲到響應的內(nèi)容,并計算過期緩沖區(qū)的靜態(tài)頁面文件的 物理地址,采用的計算方法和前面整體流程中的第二步驟計算方式一致, 只是緩沖區(qū)采用過期緩沖區(qū)的緩沖區(qū)號。得到靜態(tài)頁面文件物理地址后 將靜態(tài)頁面文件打開并進行寫鎖定; 第四步.如果加鎖失敗,則轉(zhuǎn)第7步驟;第五步.將截獲到的響應內(nèi)容寫入靜態(tài)頁面文件中,同時生成壓縮版本的靜態(tài)頁 面文件;第六步.執(zhí)行緩沖區(qū)切換操作,將過期緩沖器變成當前緩沖區(qū); 第七步.向用戶發(fā)送響應內(nèi)容; 第八步.結(jié)束。
      3. 根據(jù)權(quán)利要求1所述的一種基于ISAPI的WEB靜態(tài)頁面生成方法,其特征在 于,讀取靜態(tài)頁面流程第一步.根據(jù)用戶的HTTP請求頭判斷用戶的瀏覽器是否支持壓縮傳輸,并計算得 到當前緩沖區(qū)對應的靜態(tài)頁面文件的物理路徑,計算物理路徑的方法參 見整體流程的第2步驟。然后打開該文件并加讀鎖;第二步.如果加鎖成功,轉(zhuǎn)第5步驟;第三步.計算得到舊緩沖區(qū)對應的靜態(tài)頁面文件的物理路徑,然后打開該文件并' 加讀鎖; 第四步.如果加鎖不成功,則向用戶發(fā)送緩沖區(qū)錯誤信息轉(zhuǎn)第6步驟;第五步.從打開壓縮的或者非壓縮的的靜態(tài)頁面文件中讀取響應內(nèi)容,并發(fā)送給用戶; 第六步.結(jié)束。
      全文摘要
      本發(fā)明涉及一種基于ISAPI的WEB靜態(tài)頁面生成方法,其特征在于,在IIS6.0上面采用C++語言進行ISAPI開發(fā),制作一個加載在WEB BROWSER(網(wǎng)頁訪問瀏覽器)與動態(tài)頁面生成語言之間的靜態(tài)頁面插件,從而能夠截獲從WEB BROWSER發(fā)送到動態(tài)頁面生成語言的所有請求并進行處理,本發(fā)明的優(yōu)點是降低開發(fā)人員為解決動態(tài)頁面性能問題采用各種緩存技術(shù)的復雜工作量。
      文檔編號G06F17/30GK101126977SQ20071004534
      公開日2008年2月20日 申請日期2007年8月28日 優(yōu)先權(quán)日2007年8月28日
      發(fā)明者亮 彭, 磊 王 申請人:激動集團股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1