WOOF Metin Filtresi Aramalarını Nasıl Hızlandırılır
Sitenizde çok sayıda ürün varsa (3000+) ve yavaş arama performansı yaşıyorsanız [woof_text_filter], bu kılavuz onu optimize etmenize yardımcı olacaktır.
Sorun
Varsayılan olarak HUSKY, aramalar için SQL JOIN yöntemini kullanır, bu da büyük veritabanlarında yavaş olabilir. 10+ saniye süren metin aramaları ve kategori filtrelemenin gecikmelere neden olması yaygın belirtilerdir.
Çözüm 1: Hızlı Arama Yöntemini Etkinleştir (post__in)
Eklenti, şunu kullanan yerleşik daha hızlı bir arama yöntemine sahiptir: post__in SQL JOIN'ler yerine. Bu, büyük ürün katalogları için çok daha verimlidir.
Uygulama
Bu tek satırı temanızın functions.php dosya:
add_filter('woof_husky_query_post__in', '__return_true');
Beklenen Sonuçlar
- Metin arama hızı: 10+ saniyeden 1-3 saniyeye
- Kodu ekledikten hemen sonra çalışır
- Veritabanı değişikliği gerekmiyor
Çözüm 2: Kategori Filtrelemeyi Optimize Edin
Hızlı arama etkinleştirildikten sonra kategori filtrelemesi hala yavaşsa, iki seçeneğiniz vardır:
Seçenek A: Veritabanı İndeksleri Ekle (Önerilen)
Veritabanı indeksleri, optimize ederek kategori sorgularını önemli ölçüde hızlandırır term_relationships ve term_taxonomy tablolar.
Bu kodu şuraya ekleyin functions.php:
add_action('admin_init', 'add_woof_category_indexes', 999);
function add_woof_category_indexes() {
global $wpdb;
// Run only once
if (get_option('woof_category_indexes_added')) {
return;
}
// Add index to term_relationships table
$wpdb->query("
ALTER TABLE {$wpdb->term_relationships}
ADD INDEX woof_cat_idx (object_id, term_taxonomy_id)
");
// Add index to term_taxonomy table
$wpdb->query("
ALTER TABLE {$wpdb->term_taxonomy}
ADD INDEX woof_tax_idx (taxonomy, term_id)
");
// Mark as completed
update_option('woof_category_indexes_added', true);
}
Nasıl çalışır:
- İlk yönetici sayfası yüklemesinde bir kez çalışır
- Optimize edilmiş veritabanı indeksleri oluşturur
- Tekrar çalışmasını önlemek için tamamlama bayrağını depolar
Beklenen Sonuçlar:
- Kategori filtreleme: Birkaç saniyeden < 1 saniyeye
- Kalıcı çözüm (kod kaldırıldıktan sonra indeksler kalır)
Seçenek B: Önbellek Kategori Sorguları
Veritabanı yapısını değiştiremiyorsanız veya farklı bir yaklaşım istiyorsanız, önbelleğe alma iyi performans artışı sağlar.
Bu kodu şuraya ekleyin functions.php:
add_filter('woof_get_query_args', 'cache_woof_category_queries', 10, 1);
function cache_woof_category_queries($args) {
// Only cache when category filter is used
if (empty($_GET['product_cat'])) {
return $args;
}
// Generate cache key based on current filters
$cache_key = 'woof_cat_' . md5(serialize($_GET));
$cached_ids = get_transient($cache_key);
// Return cached results if available
if ($cached_ids !== false) {
$args['post__in'] = $cached_ids;
return $args;
}
return $args;
}
add_action('pre_get_posts', 'store_woof_category_cache', 999);
function store_woof_category_cache($query) {
// Store query results in cache
if (!empty($_GET['product_cat']) && !empty($query->posts)) {
$cache_key = 'woof_cat_' . md5(serialize($_GET));
$post_ids = wp_list_pluck($query->posts, 'ID');
set_transient($cache_key, $post_ids, HOUR_IN_SECONDS);
}
}
Nasıl çalışır:
- Kategori filtresi sonuçlarını 1 saat boyunca önbelleğe alır
- Filtre kombinasyonu başına benzersiz bir önbellek anahtarı oluşturur
- Sonraki aynı aramalarda önbelleğe alınmış ürün kimliklerini döndürür
Beklenen Sonuçlar:
- İlk arama: Normal hız
- Birbiriyle aynı sonraki aramalar: Neredeyse anında sonuçlar
- Önbellek 1 saat sonra otomatik olarak süresi dolar
Hangi Çözümü Kullanmalı?
Metin Arama Hızı Sorunları İçin:
Çözüm 1'i Kullanın (post__in filtresi) – bu en kolay ve en etkili düzeltmedir.
Kategori Filtreleme Hız Sorunları İçin:
Çözüm 2A'yı kullanın (Veritabanı İndeksleri) eğer:
- Veritabanı erişiminiz var
- Kalıcı optimizasyon istiyorsunuz
- Tüm sorgular için tutarlı bir hıza ihtiyacınız var
Çözüm 2B'yi Kullanın (Önbellekleme) eğer:
- Veritabanı yapısını değiştiremezsiniz
- Kullanıcılarınız sık sık aynı aramaları tekrarlıyor
- Değişken arama kalıplarınız var
Çözümleri Birleştirme:
Maksimum performans için tüm çözümleri güvenle birlikte kullanabilirsiniz:
- Etkinleştir
post__inyöntem (Çözüm 1) - Veritabanı indeksleri ekleyin (Çözüm 2A)
- Önbellekleme ekle (Çözüm 2B) – ek hızlanma için isteğe bağlı
Önemli Notlar
- Çocuk Tema Gerekli: Kodu her zaman bir alt temanın
functions.phptema güncellemeleri sırasında kayıpları önlemek için - Önce Yedekleyin: Veritabanı indekslerini eklemeden önce, veritabanınızı yedekleyin
- Test Ortamı: Mümkünse önce hazırlık sitesinde çözümleri test edin
- Önbelleği Temizleme: Önbellekleme çözümü kullanılıyorsa, önbelleğe alınmış sonuçların saatlik olarak güncellendiğini unutmayın
Değişikliklerinizi Test Etme
- Kodu şuraya ekleyin
functions.php - Tüm önbellekleri temizleyin (tarayıcı, WordPress, sunucu)
- Daha önce yavaş olan bir aramayı test edin
- Arama süresi iyileştirmesini izleyin
Sunucu Taraflı Optimizasyon
Bu çözümler yeterli iyileştirme sağlamazsa, şunları düşünün:
- Daha hızlı barındırmaya yükseltme
- Nesne önbelleğe almayı etkinleştirme (Redis/Memcached)
- Veritabanı sunucu yapılandırmanızı optimize etme
- Aktif eklenti sayısını azaltma
Kaynak: https://pluginus.net/support/topic/very-slow-woof_text_filter-searches/