mod_pagespeed'i başka bir sunucuya taşımak veya başka bir sisteme entegre etmek istiyor musunuz? İsteğinizi aldık. mod_pagespeed'i modüler ve Apache'den neredeyse tamamen bağımsız olacak şekilde geliştirdik. Apache dizininde yalnızca net/instaweb/apache kodu bulunabilir.
Kaynağımıza bakarsak ana kodumuzu net/instaweb/ olarak bulabilirsiniz:
- util/ ve http/,
MessageHandler,TimerveUrlFetchergibi soyut temel sınıflar dahil olmak üzere temel araçlarımızın çoğuna sahiptir. Bunun bazı örnekleri vardır ancak bunların çoğunu kendi uygulamalarınızda uygulamanız gerekir. - htmlparse/ temel HTML ayrıştırıcısına sahip. Bununla hiç uğraşmamalısınız.
- rewriter/ yeniden yazma filtreleri ve çerçevesine sahiptir. Merkezi entegrasyon noktası, burada kısmen soyut bir sınıftır:
RewriteDriverFactory. Entegrasyon çalışmalarınız, alt sınıfa ayrılarak ve saf sanal yöntemlerinin uygulanmasıyla başlar.
Aşağıdaki sınıflar için muhtemelen bir bağlantı noktası uygulamanız gerekecektir (apache/ dizinindeki örnek uygulamalara bakın):
- MessageHandler - Hata işleme (örneğin, FileMessageHandler ve ApacheMessageHandler)
- FileSystem (Örnek StdioFileSystem ve AprFileSystem gibi)
- AbstractCondvar (Örnek: PthreadCondvar ve AprCondvar)
- AbstractMutex (Örnek: PthreadMutex ve AprMutex)
- İstatistikler - Çeşitli genel istatistikleri takip edin (Örnek: Basitİstatistikler ve Nisan İstatistikleri)
- Zamanlayıcı (Örnek: MockZamanlayıcı ve AprZamanlayıcı)
- UrlFetcher: URL'ye göre kaynaklar için alıcı (WgetUrlFetcher ve SyncFetcherAdapter örneklerine bakın)
- UrlAsyncFetcher: Aynı ancak bir geri çağırma arayüzüne sahiptir (bkz. WgetUrlAsyncFetcher ve SerfUrlAsyncFetcher; ikincisi, UrlPollableAsyncFetcher öğesinin üzerine inşa edilen eşzamansız etkinlik modelini destekler)
- ReWriteDriverFactory - Bir uygulamaya özgü tüm seçenekleri ve sınıfları yönetir (Örnek: ApacheReWriteDriverFactory)
Kodu aslında çağırmak için, tüm nesnelerinizi oluşturmak üzere bir FooRewriteDriverFactory ve ardından her bir sunucu temizleme işlemi arasında StartParseWithType(url, content_type), ParseText(metin) ve her istek için FinishParse() oluşturmanız gerekir.
Bu konuyu araştırıyor veya herhangi bir sorun yaşıyorsanız lütfen geliştirme posta listemize yazın. Dahili arayüzlerin aynı kalacağını garanti edemeyiz. Bu nedenle, bunları kullandığınızı bilmiyorsak, bağlantı noktanızı kolayca kırabiliriz.