Você quer transferir mod_pagespeed para outro servidor ou integrá-lo a
outro sistema? Ótimo. Desenvolvemos o mod_pagespeed para ser modular e quase
completamente independente do Apache. O único código específico do Apache está no diretório
net/instaweb/apache.
Ao observar nossa fonte, nosso código principal fica em net/instaweb/:
- util/ e http/ têm muitas das nossas ferramentas básicas, incluindo classes base abstratas, como
MessageHandler,TimereUrlFetcher. Há alguns exemplos de implementação, mas você terá que fazer suas próprias implementações de muitas delas. - htmlparse/ tem o principal analisador de HTML. Você não deveria ter que lidar com isso.
- rewriter/ tem os filtros e o framework de reescrita. O ponto de integração central é a classe parcialmente abstrata,
RewriteDriverFactory. O esforço de integração começará com a subclassificação e a implementação dos métodos virtuais puros.
Você provavelmente precisará implementar uma porta para as classes a seguir. Veja exemplos de implementações no diretório apache/:
- MessageHandler: tratamento de erros (por exemplo, FileMessageHandler e ApacheMessageHandler)
- FileSystem (ver exemplo de StdioFileSystem e AprFileSystem)
- AbstractCondvar (ver PthreadCondvar e AprCondvar)
- AbstractDesativarx (ver exemplos de PthreadDesativarx e AprDesativarx)
- Estatísticas: acompanhe várias estatísticas globais (veja exemplos de SimpleStats e AprStatistics)
- Timer (veja exemplos de MockTimer e AprTimer)
- UrlFetcher: busca de recursos por URL. Veja o exemplo de WgetUrlFetcher e SyncFetcherAdapter.
- UrlAsyncFetcher: igual, mas com uma interface de callback. Consulte o exemplo WgetUrlAsyncFetcher e SerfUrlAsyncFetcher, que são compatíveis com um modelo de evento assíncrono baseado em UrlPollableAsyncFetcher.
- RewriteDriverFactory: gerencia todas as opções e classes específicas de uma implementação. Veja o exemplo de ApacheRewriteDriverFactory.
Para invocar o código, você precisará criar um
FooRewriteDriverFactory para criar todos os objetos, depois StartParseWithType(url, content_type), ParseText(text) entre cada limpeza do servidor e FinishParse() para cada solicitação.
Entre em contato com nossa lista de e-mails de desenvolvimento se você tiver dúvidas ou problemas. Não garantimos que as interfaces internas permaneçam as mesmas. Portanto, podemos facilmente interromper sua porta se não soubermos que você as está usando.