Ingin mentransfer mod_pagespeed ke server lain atau mengintegrasikannya ke
sistem lain? Bagus. Kami mengembangkan mod_pagespeed menjadi modular dan hampir
sepenuhnya independen dari Apache. Satu-satunya kode khusus Apache ada di
direktori net/instaweb/apache
.
Jika Anda melihat sumber kami, kode utama kami adalah dalam net/instaweb/:
- util/ dan http/ memiliki banyak alat dasar, termasuk class dasar abstrak
seperti
MessageHandler
,Timer
, danUrlFetcher
. Ada beberapa contoh penerapan, tetapi Anda harus membuat implementasi sendiri dari banyak implementasi tersebut. - htmlparse/ memiliki parser HTML inti. Anda tidak harus menanganinya.
- rewriter/ memiliki filter dan framework penulisan ulang. Titik
integrasi pusat adalah class abstrak sebagian
di sini,
RewriteDriverFactory
. Upaya integrasi Anda akan dimulai dengan membuat subclass untuknya dan mengimplementasikan metode virtual murni.
Anda mungkin harus menerapkan port untuk class berikut (lihat contoh penerapan di direktori apache/):
- MessageHandler - Penanganan error (Lihat misalnya FileMessageHandler dan ApacheMessageHandler)
- FileSystem (Lihat contoh StdioFileSystem dan AprFileSystem)
- AbstractCondvar (Lihat contoh PthreadCondvar dan AprCondvar)
- AbstractMutex (Lihat contoh PthreadMutex dan AprMutex)
- Statistik - Melacak berbagai statistik global (Lihat contoh SimpleStats dan AprStatistics)
- Timer (Lihat contoh MockTimer dan AprTimer)
- UrlFetcher - Pengambilan resource menurut URL (Lihat contoh WgetUrlFetcher dan SyncFetcherAdapter)
- UrlAsyncFetcher - Sama dengan antarmuka callback (Lihat contoh WgetUrlAsyncFetcher dan SerfUrlAsyncFetcher; yang terakhir mendukung model peristiwa asinkron yang dibuat di atas UrlPollableAsyncFetcher)
- RewriteDriverFactory - Mengelola semua opsi dan class khusus untuk implementasi (Lihat contoh ApacheRewriteDriverFactory)
Kemudian untuk benar-benar memanggil kode, Anda harus membuat FooRewriteDriverFactory
untuk membuat semua objek, lalu StartParseWithType(url, content_type), ParseText(text) di antara setiap flush server, dan FinishParse() untuk setiap permintaan.
Silakan kirim email ke milis pengembangan kami jika Anda sedang mempelajari masalah ini atau mengalami masalah. Kami tidak menjamin bahwa antarmuka internal akan tetap sama, sehingga kami dapat merusak port dengan mudah jika kami tidak mengetahui bahwa Anda menggunakannya.