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(Pthread ミュート x と Apr ミュート x の例を参照)
- 統計情報 - さまざまなグローバル統計情報を追跡できます(SimpleStats と AprStatistics の例を参照)。
- タイマー(MockTimer と AprTimer の例を参照)
- UrlFetcher - URL ごとのリソースを取得します(WgetUrlFetcher と SyncFetcherAdapter の例を参照)
- UrlAsyncFetcher - 同じですが、コールバック インターフェースがあります(WgetUrlAsyncFetcher と SerfUrlAsyncFetcher の例をご覧ください。後者は UrlPollableAsyncFetcher を基盤とした非同期イベントモデルをサポートしています)。
- RewriteDriverFactory - 実装に固有のすべてのオプションとクラスを管理します(ApacheRewriteDriverFactory の例をご覧ください)。
次に、実際にコードを呼び出せるようにするには、FooRewriteDriverFactory を作成してすべてのオブジェクトを作成し、さらにサーバーの各フラッシュの間に StartParseWithType(url, content_type)、ParseText(text)、リクエストごとの FinishParse() を指定する必要があります。
調査が必要な場合や問題が発生した場合は、開発メーリング リストにお問い合わせください。内部インターフェースが変わらないことが保証されているわけではないため、ユーザーが使用していることがわからない場合、簡単にポートが切断される可能性があります。