Tenant Bazlı Aktif/Pasif Yönetimi
Response cache tüm tenant'lar için global olarak aktif/pasif yapılıyor. Bazı tenant'lar için cache açık, bazıları için kapalı olmasını istiyoruz.
Örnek Senaryo:
• Tenant 2 (ixtif.com) → Cache aktif (statik içerik, hızlı olmalı)
• Tenant 1001 (muzibu.com) → Cache pasif (dinamik içerik, gerçek zamanlı)
📝 Basit Anlatım (Herkes İçin):
Her tenant admin panelinden "Response Cache Aç/Kapa" butonu ile kontrol eder. Tıpkı "Dark Mode" açıp kapatmak gibi kolay. Tenant kendisi karar verir: "Ben hızlı olayım, cache açayım" veya "Dinamik içeriğim var, cache kapatayım" diye.
🔧 Nasıl Çalışır:
settings tablosuna kaydedilirsetting('response_cache_enabled', true)💻 Teknik Detaylar (Geliştiriciler İçin):
Dosya:
app/Services/TenantCacheProfile.php
Kod Değişikliği:
public function enabled(Request $request): bool
{
// Global config kontrolü
if (!config('responsecache.enabled', true)) {
return false;
}
// Tenant bazlı kontrol
return setting('response_cache_enabled', true);
}
Settings Key:
response_cache_enabled
✅ Artıları:
❌ Eksileri:
📝 Basit Anlatım (Herkes İçin):
Sadece "premium" plan alan tenant'lar cache kullanabilir. Ücretsiz plan = cache yok (yavaş), premium plan = cache var (hızlı). Tıpkı Netflix'te "HD video" özelliğinin sadece premium üyelerde olması gibi. Tenant plan upgrade ederse otomatik olarak cache aktif olur.
🔧 Nasıl Çalışır:
tenant()->is_premium veya tenant()->plan->has_cache kontrolü💻 Teknik Detaylar (Geliştiriciler İçin):
Kod Değişikliği:
public function enabled(Request $request): bool
{
if (!config('responsecache.enabled', true)) {
return false;
}
// Premium kontrolü
return tenant() && tenant()->is_premium;
}
Tenant Model:
is_premium attribute veya relation gerekir
✅ Artıları:
❌ Eksileri:
📝 Basit Anlatım (Herkes İçin):
Kod içinde "bu tenant'lar cache kullansın" diye liste tutulur. Sen manuel eklersin/çıkarırsın. Tıpkı "VIP listesi" gibi: Listede varsa cache kullanır, yoksa kullanmaz. Tam kontrol sende ama her değişiklik için kod güncelleme gerekir.
🔧 Nasıl Çalışır:
💻 Teknik Detaylar (Geliştiriciler İçin):
Config Dosyası:
config/cache-enabled-tenants.php
Config İçeriği:
return [
2, // ixtif.com
5, // example.com
10, // demo.com
];
Kod Değişikliği:
public function enabled(Request $request): bool
{
if (!config('responsecache.enabled', true)) {
return false;
}
$enabledTenants = config('cache-enabled-tenants', []);
return tenant() && in_array(tenant()->id, $enabledTenants);
}
✅ Artıları:
❌ Eksileri:
| Özellik | Settings Sistemi | Premium/Plan | ID Listesi |
|---|---|---|---|
| Tenant kontrol | ✅ Evet | ❌ Hayır | ❌ Hayır |
| Admin'den yönetim | ✅ Evet | ❌ Hayır | ❌ Hayır |
| Anında değişiklik | ✅ Evet | ✅ Evet | ❌ Deploy gerekir |
| Ölçeklenebilirlik | ✅ Yüksek | ✅ Yüksek | ❌ Düşük |
| Monetizasyon | ⚠️ Opsiyonel | ✅ Doğrudan | ❌ Yok |
| Kod karmaşıklığı | ✅ Basit (2 satır) | ⚠️ Orta | ✅ Çok basit |
| Test kolaylığı | ✅ Kolay | ⚠️ Orta | ✅ Kolay |
Yöntem 1: Settings Sistemi kullanmanı öneriyoruz.
💡 Neden?
💎 İkinci Seçenek: Premium/Plan Kontrolü
Eğer cache'i "premium özellik" olarak satmak istiyorsan, Yöntem 2'yi kullan. Monetizasyon stratejin varsa harika bir seçenek.
app/Services/TenantCacheProfile.php
public function enabled(Request $request): bool
{
// Global config kontrolü
if (!config('responsecache.enabled', true)) {
return false;
}
// Tenant bazlı kontrol (Settings'den)
return setting('response_cache_enabled', true);
}
php artisan tinker // Cache aktif tenant için test setting(['response_cache_enabled' => true]); // Cache pasif tenant için test setting(['response_cache_enabled' => false]);
Settings sayfasına "Response Cache" checkbox ekle.
<input type="checkbox"
name="response_cache_enabled"
{{ setting('response_cache_enabled', true) ? 'checked' : '' }}>
<label>Response Cache Aktif</label>
php artisan config:cache php artisan responsecache:clear # Test et curl -I https://ixtif.com/ | grep -i cache-control
🤖 Claude AI tarafından oluşturuldu • 20 Aralık 2025