• 沒有找到結果。

第三章 系統設計與實作

3.2 Application-Level 動態網頁快取系統之設計與實作

3.2.1 系統整體架構與運作流程

幅提升網頁伺服器之處理能力,而為了實現此設計概念,本研究先後進行了二種 不同實作層次之動態網頁快取系統設計 -- Application-Level 與 Server-Level,而 此二套快取系統將在本章之後續章節分別詳細介紹。

圖3.2、Application-Level 動態網頁系統之整體架構與流程示意圖

可初步取得這些網頁快取系統之快取認可。

再來則是位於伺服器處理客戶端請求之流程前的判別樞紐,在此系統中稱為 Web Switch,由於 Web Switch 之設計必須特別簡化,以免加重網頁伺服器之負 擔,導致伺服器之處理能力降低,因此,在藉由伺服器之原有機制之協助下,本 研究僅在Web Switch 中作二點判別,一為所請求之網頁是否存在,二為請求中 之URL 是否為 Type B,之後便根據最後之判別結果,來決定是否須將此 Type B URL 轉譯為 Type A URL,以驅使網頁伺服器開始進行靜態網頁之處理流程,自 Cache Directory 中,直接取出快取文件,或是驅使網頁伺服器自伺服器之其它儲 存位置中,直接取出 靜態網頁之內容,再 由伺服器自行加上相 關之 HTTP

Static Web Server

Cache Directory

Web Apps

(WADC)

Web Switch

Dynamic Client

Save Type B

Cache Manager

Type A

Save as cmr file

Compare Update

Notify

Response Response

Header,最後傳送回客戶端使用,或是驅使網頁伺服器開始進行動態網頁之處理 流程。

一旦網頁伺服器開始動態網頁之處理流程,則必然會執行動態網頁應用程 式,以產生動態網頁,由於Application-Level 動態網頁快取系統之主要動態網頁 快取工作,乃是由動態網頁應用程式所負責,因此,動態網頁應用程式即須具備 快取之功能,故本研究稱之為WADC(Web Application Designed for Caching),

WADC 須自行快取其程式執行所產生之結果,而此結果在交由網頁伺服器傳送

回客戶端使用之前,須再自行加上適當之HTTP Cache-Control Header,使此結果 不僅可突破客戶端網頁快取系統之查驗網頁可否快取的第二檢查機制 – 有無 HTTP Cache-Control Header,而可快取於客戶端之網頁快取系統內,也可指示客

戶端之網頁快取系統,須在 Header 內所標明之快取文件逾期時間,向網頁伺服 器端索取最新之內容,以避免內容一致性之問題發生,此外,WADC 也須將這 些結果存成快取文件,放置於Cache Directory 中,以供下次再有相同之客戶端請 求時,網頁伺服器可進行靜態網頁之處理流程,直接取用這些快取文件,以快速 的回覆客戶端之請求,而在最後,WADC 尚須進行另一項工作 – 知會 Cache Manager,以利 Cache Manager 爾後對快取文件之管理工作。

最後的系統元件即為Cache Manager,其位於網頁伺服器之後端,接收來自 於 WADC 之知會,以了解該如何維護快取文件,但其並不實際參與任何前述之

處理流程,是為一獨立運行於伺服器系統之常駐程式,其負責管理所有存放於 Cache Directory 中之快取文件,Cache Manager 紀錄這些快取文件之各種屬性 值,並負責維護快取文件之內容一致性,其能在快取文件逾期之當時,旋即向網 頁伺服器發出Type A URL 之請求,以驅策網頁應用程式產生最新的快取文件之 內容,並比對新、舊快取文件內容之異同,以決定是否更新快取文件之內容,而 另一項Cache Manager 之工作項目,則為在 Cache Directory 之磁碟儲存空間即將 滿溢時,進行快取空間置換之工作。

綜合上述之各系統元件與流程,可以得知在Application-Level 動態網頁快取 系統中,共有三個處理流程,分別為靜態網頁之處理流程、動態網頁之處理流程、

Cache Manager 之處理流程,這些流程彼此獨立運行,而不相互衝突、干擾,故 能使此快取系統之效率大幅提升,並能在充分運用網頁伺服器之既有運行架構,

但卻又不會增加過多負擔網頁伺服器之情況下,達成了本研究快取動態網頁之設 計目標,因而可完全達成縮短使用者之等待時間,以及提升網頁伺服器之處理能 力二大研究目的,不過由於Application-Level 動態網頁快取系統之設計初衷是為 追求最大之系統效率,故因在不增加網頁伺服器負擔之設計考量下,使得網頁伺 服器無法擁有更多之功能,因此,對於使用動態網頁中之動、靜態內容分離之概 念,以減少網路壅塞情形之研究目的,則需程式設計師在設計動態網頁應用程式 時,自行分離出動、靜態內容之程式碼,成為二個分別處理、輸出動、靜態內容 之動態網頁應用程式,方能達成。