Vuoi trasferire la velocità mod_pagespeed a un altro server o integrarla in
un altro sistema? Bene. Abbiamo sviluppato mod_pagespeed in modo modulare e quasi
completamente indipendente da Apache. L'unico codice specifico per Apache è nella
directory net/instaweb/apache.
Se esamini l'origine, il codice principale si trova in net/instaweb/:
- util/ e http/ hanno molti dei nostri strumenti di base, tra cui classi di base astratte come
MessageHandler,TimereUrlFetcher. Esistono alcune implementazioni di esempio, ma è necessario creare le proprie implementazioni. - htmlparse/ ha l'analizzatore sintattico HTML principale. Non devi assolutamente preoccuparti di questa cosa.
- rewriter/ dispone dei filtri e del framework di riscrittura. Il punto di integrazione centrale è la classe parzialmente astratta qui,
RewriteDriverFactory. Il tuo impegno di integrazione inizierà con la sottoclassificazione e l'implementazione dei suoi metodi virtuali puri.
Probabilmente dovrai implementare una porta per le seguenti classi (vedi le implementazioni di esempio nella directory apache/):
- MessageHandler - Gestione degli errori (vedi ad esempio FileMessageHandler e ApacheMessageHandler)
- FileSystem (vedi StdioFileSystem e AprFileSystem di esempio)
- AbstractCondvar (vedi PthreadCondvar e AprCondvar di esempio)
- Abstractmutex (vedi Pthreadmutex e Aprmutex di esempio)
- Statistiche: tieni traccia di varie statistiche globali (ad esempio, SimpleStats e AprStatistics).
- Timer (vedi MockTimer e ApriTimer di esempio)
- UrlFetcher - Recupero risorse per l'URL (vedi gli esempi di WgetUrlFetcher e SyncFetcherAdapter).
- UrlAsyncFetcher: uguale, ma con un'interfaccia di callback (vedi WgetUrlAsyncFetcher e SerfUrlAsyncFetcher, quest'ultimo supporta un modello di evento asincrono basato su UrlPollableAsyncFetcher)
- RewriteDriverFactory: gestisce tutte le opzioni e le classi specifiche di un'implementazione. Vedi l'esempio di ApacheRewriteDriverFactory.
Per richiamare effettivamente il codice, dovrai creare un elemento FooRewriteDriverFactory per creare tutti gli oggetti, quindi StartParseWithType(url, content_type), ParseText(text) tra ciascuno svuotamento del server e FinishParse() per ogni richiesta.
Scrivi alla nostra mailing list di sviluppo se stai esaminando questo o hai problemi. Non forniamo alcuna garanzia che le interfacce interne rimangano invariate, quindi potremmo facilmente danneggiare la porta se non sappiamo che le stai utilizzando.