您要將 mod_pagespeed 移植至其他伺服器,或將其整合至其他系統嗎?漂亮!我們為模組化作業採用 mod_pagespeed 模組,幾乎完全獨立於 Apache。唯一的 Apache 專屬程式碼位於 net/instaweb/apache 目錄中。
當您查看我們的來源時,我們的主要程式碼位於 net/instaweb/:
- util/ 和 http/ 皆提供許多基本工具,包括抽象基本類別,例如
MessageHandler、Timer和UrlFetcher。以下列舉幾個實作方式,但您必須自行實作其中幾項實作。 - htmlparse/ 擁有核心 HTML 剖析器。您完全不必費心處理。
- rewriter/:具有重新寫入篩選器與架構。中心整合點是此處的部分抽象類別
RewriteDriverFactory。您的整合作業會先進行分類,並實作純虛擬虛擬方法。
您可能需要為下列類別實作通訊埠 (請參閱 apache/ 目錄中的範例實作):
- MessageHandler - 錯誤處理 (例如 FileMessageHandler 和 ApacheMessageHandler)
- FileSystem (請參閱 StdioFileSystem 和 AprFileSystem 範例)
- AbstractCondvar (請參閱 PthreadCondvar 和 AprCondvar 範例)
- Abstract 味 x (請參閱 Pthreadignorex 和 Apr 靜音 x 範例)
- 統計資料 - 追蹤各種全球統計資料 (請參閱 SimpleStats 和 AprStats) 範例
- 計時器 (請參閱 MockTimer 和 AprTimer 範例)
- UrlFetcher - 依網址擷取資源的擷取器 (請參閱 WgetUrlFetcher 和 SyncFetcherAdapter 範例)
- UrlAsyncFetcher - 相同,但具備回呼介面 (請參閱 WgetUrlAsyncFetcher 和 SerfUrlAsyncFetcher 範例;後者支援以 UrlPollableAsyncFetcher 為基礎建構的非同步事件模型)
- RewriteDriverFactory - 管理實作專屬所有選項和類別 (請參閱 ApacheRewriteDriverFactory 範例)
接著,您必須建立 FooRewriteDriverFactory 來建立所有物件,然後在伺服器的每次清除之間使用 StartParseWithType(url, content_type)、ParseText(text),以及每個要求的 FinishParse(),才能實際叫用程式碼。
如果您在查看或遇到問題時,請參閱我們的開發郵寄清單。我們不保證所有內部介面都維持不變,所以如果我們不確定您正在使用這些介面,我們很容易就能破壞您的通訊埠。