Möchten Sie mod_pagespeed auf einen anderen Server mitnehmen oder in ein anderes System einbinden? Super! Wir haben „mod_pagespeed“ so entwickelt, dass es modular ist und fast völlig unabhängig von Apache ist. Der einzige Apache-spezifische Code befindet sich im Verzeichnis net/instaweb/apache.
Wenn Sie sich unsere Quelle ansehen, befindet sich unser Hauptcode in net/instaweb/:
- util/ und http/ haben viele unserer grundlegenden Tools, einschließlich abstrakter Basisklassen wie
MessageHandler,TimerundUrlFetcher. Es gibt einige Implementierungsbeispiele, die Sie jedoch selbst implementieren müssen. - htmlparse/ hat den Kern-HTML-Parser. Du solltest dich überhaupt nicht damit auseinandersetzen.
- rewriter/ hat die Umschreibfilter und das Framework. Der zentrale Integrationspunkt ist hier die teilweise abstrakte Klasse,
RewriteDriverFactory. Ihr Integrationsaufwand beginnt damit, dass Sie ihn abgeleitet haben und seine reinen virtuellen Methoden implementieren.
Wahrscheinlich müssen Sie für die folgenden Klassen einen Port implementieren (siehe Beispielimplementierungen im Verzeichnis Apache/):
- MessageHandler – Fehlerbehandlung (siehe z. B. FileMessageHandler und ApacheMessageHandler)
- FileSystem (siehe Beispiel StdioFileSystem und AprFileSystem)
- Abstraktes Condvar (siehe Beispiel PthreadCondvar und AprCondvar)
- ZusammenfassungStummschaltenx (siehe Beispiel PthreadStummschaltenx und AprStummschaltungx)
- Statistiken: Sie haben die Möglichkeit, verschiedene globale Statistiken zu verfolgen (siehe Beispiel SimpleStatistics und AprStatistics).
- Timer (siehe Beispiel MockTimer und AprTimer)
- UrlFetcher – Abruf von Ressourcen nach URL (siehe Beispiel WgetUrlFetcher und SyncFetcherAdapter)
- UrlAsyncFetcher – Wie aber bei einer Callback-Schnittstelle (siehe Beispiel WgetUrlAsyncFetcher und SerfUrlAsyncFetcher; letztere unterstützt ein asynchrones Ereignismodell, das auf UrlPollableAsyncFetcher basiert).
- RewriteDriverFactory – verwaltet alle Optionen und Klassen, die für eine Implementierung spezifisch sind (siehe Beispiel ApacheRewriteDriverFactory)
Anschließend müssen Sie einen FooRewriteDriverFactory erstellen, um alle Objekte zu erstellen, und dann StartParserWithType(url, content_type), ParseText(text) zwischen den einzelnen Leerungen des Servers und FinishParse() für jede Anfrage aufrufen.
Schreiben Sie uns auf unsere Mailingliste für die Entwicklung, wenn Sie diese überprüfen oder Probleme haben. Wir können nicht garantieren, dass alle internen Schnittstellen gleich bleiben. Wenn wir nicht wissen, dass Sie sie verwenden, könnten wir Ihren Port problemlos unterbrechen.