Voulez-vous transférer mod_pagespeed vers un autre serveur ou l'intégrer à un autre système ? Parfait. Nous avons développé mod_pagespeed pour qu'il soit modulaire et quasiment indépendant d'Apache. Le seul code spécifique à Apache se trouve dans le répertoire net/instaweb/apache.
Si vous consultez notre source, vous trouverez le code principal dans net/instaweb/:
- util/ et http/ possèdent un grand nombre de nos outils de base, y compris des classes de base abstraites comme
MessageHandler,TimeretUrlFetcher. Il existe des exemples de mise en œuvre, mais vous devrez procéder vous-même à un grand nombre de ces choix. - htmlparse/ contient l'analyseur HTML principal. Vous ne devriez pas du tout faire face à cette situation.
- rewriter/ dispose des filtres et du framework de réécriture. Le point d'intégration central est ici la classe partiellement abstraite
RewriteDriverFactory. Pour commencer votre intégration, vous devez procéder à un sous-classement et implémenter ses méthodes virtuelles pures.
Vous devrez probablement implémenter un port pour les classes suivantes (consultez des exemples d'implémentations dans le répertoire apache/):
- MessageHandler : gestion des erreurs (voir par exemple FileMessageHandler et ApacheMessageHandler)
- FileSystem (voir StdioFileSystem et AprFileSystem)
- abstractionCondvar (voir les exemples PthreadCondvar et AprCondvar)
- abstractionmutex (voir les exemples Pthreadmutex et Aprmutex)
- Statistiques : effectuez le suivi de différentes statistiques globales (voir les exemples SimpleStats et AprStatistics).
- Minuteur (voir les exemples MockMinute et AprReset)
- UrlFetcher : outil de récupération des ressources par URL (voir les exemples WgetUrlFetcher et SyncFetcherAdapter).
- UrlAsyncFetcher : identique, mais avec une interface de rappel. Consultez les exemples WgetUrlAsyncFetcher et SerfUrlAsyncFetcher. Ce dernier est compatible avec un modèle d'événement asynchrone basé sur UrlPollableAsyncFetcher.
- RewriteDriverFactory : gère toutes les options et classes spécifiques à une mise en œuvre (voir l'exemple ApacheRewriteDriverFactory).
Ensuite, pour appeler le code, vous devez créer un FooRewriteDriverFactory pour créer tous vos objets, puis StartParseWithType(url, content_type), ParseText(text) entre chaque vidage du serveur et FinishParse() pour chaque requête.
Si vous avez besoin d'aide ou si vous rencontrez des problèmes, veuillez écrire dans notre liste de diffusion relative au développement. Nous ne garantissons pas que les interfaces internes resteront les mêmes. Par conséquent, nous pourrions endommager votre port si nous ne savions pas que vous les utilisiez.