HUSKY - Products Filter Professional for WooCommerce

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:

  1. Etkinleştir post__in yöntem (Çözüm 1)
  2. Veritabanı indeksleri ekleyin (Çözüm 2A)
  3. Ö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.php tema 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

  1. Kodu şuraya ekleyin functions.php
  2. Tüm önbellekleri temizleyin (tarayıcı, WordPress, sunucu)
  3. Daha önce yavaş olan bir aramayı test edin
  4. 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/