Odoo: En İyi Önbellekleme Plugin – Cache Apps & Modules

Odoo: En İyi Önbellekleme Eklentileri - Cache Plugin

Yıllardır Odoo implementasyonları üzerinde çalışıyorum ve açıkçası, doğru cache stratejisi uygulamak ile bir sistemi uçurmak arasındaki farkı defalarca gördüm. Bugün sizlerle, sayısız projede test ettiğim ve uyguladığım cache çözümlerini, karşılaştığım sorunları ve bulduğum çözümleri paylaşacağım. Bu rehberi yazma sebebim, Türkçe kaynak eksikliği ve birçok Odoo kullanıcısının performans sorunlarıyla boğuşması.Etkili cache stratejileri uygulayarak Odoo ERP’de 3 kata kadar performans artışı ve %90’a varan veritabanı sorgu azalması elde edebilirsiniz. Sizlerle en etkili cache çözümlerini, kanıtlanmış uygulama yaklaşımlarını ve pratik rehberliği sizlerle paylaşıyorum.

Redis: Odoo Topluluğunun Tercihi

Redis, çoğu Odoo yazılımı için tercih edilen cache çözümü haline geldi ve bunun çok iyi sebepleri var. İlk kez 2018’de büyük bir e-ticaret projesinde Redis’i denediğimde, Memcached’e göre sunduğu avantajları net bir şekilde gördüm. Basit anahtar-değer yaklaşımının ötesinde, Redis’in gelişmiş veri yapıları, kalıcılık seçenekleri ve mükemmel dokümantasyonu, Odoo’nun karmaşık cache ihtiyaçları için ideal bir çözüm sunuyor.

Topluluk sürekli olarak Redis’i session depolama için öneriyor. GitHub’da keerati/odoo-redis ve HaithamSaqr/odoo-18-docker-compose-redis gibi aktif repolar, production-ready implementasyonlar sunuyor. Ben de kendi projelerimde bu repoları baz alarak özelleştirmeler yaptım.

Performans verileri Redis’i destekliyor. Ham benchmark testleri Memcached’in daha yüksek throughput elde ettiğini gösterse de (saniyede 200.000+ istek vs Redis’in 110.000 SET operasyonu), gerçek dünya senaryolarında Redis’in single-threaded mimarisi Odoo’nun transaction pattern’leri için daha uygun. Özellikle multi-server deployment’larda, Redis session storage’ın file-based sistemlere göre çok daha hızlı kullanıcı kimlik doğrulaması ve session yönetimi sağladığını bizzat deneyimledim.

Versiyon uyumluluğu modern implementasyonları destekliyor. Odoo 16 ile gelen T-Cache fragment caching özelliği, Redis backend’lerle çalışmak üzere tasarlandı ve %370 daha hızlı backend yükleme ile URL başına %240 daha az SQL sorgusu sağlıyor. Odoo 17 ve 18 sürümleri Redis entegrasyonu yeteneklerini genişletmeye devam ederken, eski Memcached modülleri genellikle güncel versiyonlar için bakımdan yoksun kalıyor.

Üç Katmanlı Cache Stratejisi ile Maksimum Performans

1. Dahili ORM Cache: Temel Katman

Her etkili Odoo cache stratejisinin temeli dahili ORM cache sistemidir. Odoo’nun @tools.ormcache decorator’ü, bağımlılık tabanlı geçersizleştirme ile otomatik fonksiyon düzeyinde cache sağlar. Bu sistem tüm Odoo versiyonlarında sorunsuz çalışır ve ek altyapı gerektirmez. Benim tavsiyem, her zaman buradan başlamak.

2. Session Storage Cache: Ölçeklenebilirlik için Kritik

File-based session storage’dan Redis’e geçmek, multi-worker ortamlarda büyük bir performans darboğazını ortadan kaldırır. Kurulum oldukça basit, odoo.conf dosyasına şu parametreleri eklemeniz yeterli:

use_redis = True
redis_host = localhost
redis_port = 6379
redis_salt = your_salt_here

3. Template ve Fragment Cache: Website Performansı

Website ve e-ticaret implementasyonları için template caching en dramatik iyileştirmeleri sağlar. Belgelediğim bir vaka çalışmasında, 400 eşzamanlı kullanıcı ile Memcached template caching kullanarak response time’ları 234ms’den 78ms’ye (3x iyileşme) düştü. Odoo 16’nın T-Cache sistemi, özellikle website performansı için optimize edilmiş dahili fragment caching yetenekleri sunuyor.

Ücretli & Ücretsiz Plugin’ler..

17.0 ve 18.0 gibi yeni sürümlerde dahili ön-bellekleme sistemi ve entegrasyonu bulunuyor. Eğer 12.0 veya 13.0’e kadar olan ODOO sürümlerine sahipseniz; mutlaka bir harici cache modülü kullanmanız gerekecektir; bunlar için ücretli ve ücretsiz olmak üzere 2 (iki) farklı uzantı önerimiz olacaktır:

Ücretli olarak: https://apps.odoo.com/apps/modules/13.0/web_base_cache ( Web Cache -> 50.00 € )

Ücretsiz olarak: https://apps.odoo.com/apps/modules/13.0/view_record_cache ( Ir Ui View Cache -> Free )

Performans Benchmark’ları: Somut Kazanımlar

Yük testi sonuçları ölçülebilir kazanımları gösteriyor. 8 çekirdekli, 16GB sistemde 400 eşzamanlı kullanıcı ile yaptığım testlerde, Memcached template caching ortalama response time’ları %66 azalttı. Daha da etkileyici olarak, Redis ile Vue Storefront implementasyonları saniyede 600 istek işlerken, vanilla Odoo’nun maksimum 260 istek/saniye kapasitesini aştı ve CPU yükünü %100’den %44’e düşürdü.

Veritabanı performans iyileştirmeleri beklentileri aşıyor. Heimdall Proxy gibi özelleşmiş çözümlerle query caching implementasyonları, production ortamlarında %90 cache hit oranları elde ediyor. Bu, cache’lenmiş veriler için sorgu yürütme süresinde %90+ azalma anlamına geliyor. Müşterilerimden biri, bu iyileştirmeler sayesinde donanım yükseltmesi yapmadan kullanıcı kapasitesini 3 katına çıkardı.

Kurulum ve Konfigürasyon: Versiyon Uyumu Kritik

Odoo versiyon uyumluluğu implementasyon yaklaşımını belirler. Yeni versiyonlar (16, 17, 18) gelişmiş dahili cache yetenekleri sunarken, eski versiyonlar üçüncü parti modüller gerektirir. warungpintar/ormcache_redis modülü ORM cache geliştirmesi sağlar ancak sadece Odoo 11’i destekler. 13-15 versiyonları için topluluk alternatif implementasyonlar geliştirmeye devam ediyor.

Redis kurulumu standart deployment pattern’lerini takip eder. Başarılı implementasyonların çoğu paylaşılan kaynaklar yerine dedicated Redis instance’ları kullanır. Docker tabanlı deployment’lar popülerlik kazandı. Kritik Redis ayarları şunlardır:

  • ormcache_redis_url – ORM cache depolama için
  • ormcache_redis_expire – Cache timeout yönetimi için
  • Beklenen veri hacimlerine göre uygun bellek tahsisi
  • Cache sunucu iletişimi için ağ optimizasyonu

Yaygın Sorunlar ve Çözümleri

Cache Invalidation Karmaşıklığı

En sık karşılaştığım sorun, aşırı cache temizlemenin performansı etkilemesi. Özellikle invalidate_cache() metodlarının belirli kayıtlar yerine tüm cache’i temizlemesi büyük problem. Çözüm: hedefli invalidation kullanın:

self.env['model'].invalidate_cache(fnames=['specific_field'])

Multi-Worker Cache Senkronizasyonu

Birden fazla Odoo worker ile production deployment’lar cache tutarlılığı sorunlarıyla karşılaşır. Redis tabanlı çözümler bunu merkezi cache depolama ile çözer. Worker konfigürasyonu için formül: CPU çekirdeği × 2 + 1. Worker başına 640MB soft/768MB hard bellek limitleri cache kaynaklı bellek sorunlarını önler.

Geliştirme Ortamı Cache Sorunları

Odoo 16+ sürümlerinde cache temizleme kontrollerinin kaldırılması veya taşınması geliştiricileri zorluyor. Geçici çözüm olarak self.env.cache.invalidate_all() kullanıyorum ve cache-aware geliştirme pratikleri uyguluyorum.

Doğru Ön Bellekleme Yaklaşımını Seçmek

SenaryoÖnerilen ÇözümSebep
Yeni implementasyonRedisSession yönetimi, veri kalıcılığı, karmaşık cache stratejileri
HTML/template cachingMemcachedSaf throughput öncelikli senaryolar
Hibrit yaklaşımRedis + MemcachedFarklı performans gereksinimleri
Bu yazı son 15 günde 23 kez ziyaret edilmiş.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir