Yirik kataloglarda tez filtrlar: bazani oʻldirmasdan va indeksatsiyani yoʻqotmasdan
Filtr — katalogning eng yuklangan elementi. U bir vaqtda ikki qarama-qarshi vazifani hal qiladi: foydalanuvchiga darhol javob berish va millionlab axlat URL yaratmaslik.
Nega filtrlar sekinlashadi
Klassik sabab — xususiyatlar «xossa-qiymat» jadvalida vertikal saqlanadi va har bir tanlangan filtr yana bitta JOIN qoʻshadi. Beshta shartda soʻrov soniyalarga ketadi.
Ikkinchi sabab — umumiy natijalar sonini va har bir filtr varianti yonidagi hisoblagichni hisoblash. Katta tanlanma boʻyicha toʻliq COUNT koʻpincha birinchi sahifadagi tovarlarni tanlashdan qimmatroq.
Uchinchisi — chegirmali yakuniy narx kabi hisoblanadigan maydon boʻyicha saralash. Uni indekslab boʻlmasa, baza har soʻrovda butun tanlanmani saralaydi.
Ma'lumot sxemasi bilan nima qilish
Eng koʻp filtrlanadigan xususiyatlarni indeksli alohida tovar ustunlariga denormallashtiring. EAV sxemasining universalligi muharrirga qulay, lekin buning haqini foydalanuvchi tezlik bilan toʻlaydi.
Tarkibiy indekslarni bitta maydonga bitta indeks emas, real filtr kombinatsiyalari ostida quring. Indeksdagi ustunlar tartibi ahamiyatli: avval aniq tenglik maydonlari, keyin diapazon, keyin saralash.
Filtrlar oʻnlab, kombinatsiyalar yuzlab boʻlgan kataloglarda SQL tyuningi oʻrniga qidiruvni teskari indeksli qidiruv dvigateliga chiqargan toʻgʻriroq.
Keshlash va hisoblagichlar
Filtrlash natijalarini normallashtirilgan kalit boʻyicha keshlang: saralangan parametrlar toʻplami, sahifa, saralash. URL'dagi parametrlarning turli tartibi turli kesh kalitlarini yaratmasligi kerak.
Har bir filtr varianti yonidagi tovar soni hisoblagichlari foydali, lekin qimmat. Murosа: ularni real vaqtda emas, kichik kechikish bilan hisoblash va nol natijali variantlarni yashirish.
Kesh invalidatsiyasi hisob tizimidan narx va qoldiqlar yangilanishiga bogʻlanadi. Har 10–15 daqiqada sinxronizatsiyada keshni butunlay emas, tegishli kategoriyalar boʻyicha tanlab tashlagan oqilona.
URL, indeksatsiya va dublikatlar
Bir-ikkita mashhur filtr uchun /katalog/nasoslar/botiruvchi/ koʻrinishidagi alohida CHPU sahifalarini indeksatsiyaga ochiq, oʻz title, description va matni bilan qiling. Bu uzun soʻrovlar boʻyicha asosiy trafik manbai.
Qolgan barcha kombinatsiyalarni GET parametrlarida qoldiring va yoping: bazaviy kategoriyaga canonical plyus koʻp omilli kombinatsiyalar uchun noindex, follow.
Saralash va paginatsiya indekslanadigan dublikatlar yaratmasligi kerak: saralash sahifalaridan canonical bazaviyga, paginatsiya sahifalarida esa oʻziga koʻrsatuvchi canonical va sahifa raqamli unikal title.
Interfeys va tezlik hissi
Mobilda filtrlar pastdan panel bilan, qoʻllash tugmasi va topilganlar hisoblagichi bilan ochiladi. Har bir belgini darhol qoʻllash 3G'da osilib qolgandek his qilinadi.
Tanlangan filtrlarni roʻyxat ustida chiplar bilan koʻrsating, birma-bir olib tashlash va hammasini tozalash tugmasi bilan. Nega toʻrtta tovar koʻrayotganini tushunmagan foydalanuvchi shunchaki ketadi.
Filtrlar holati URL'da boʻlishi shart, sahifa havola bilan ulashilsin va «orqaga» tugmasini yengsin. Telegram'li mahalliy auditoriya uchun bu ayniqsa muhim.
Diapazonlar, ustuvorliklar va oʻlchovlar
Soʻmdagi narx diapazonini faqat slayder emas, kiritish maydonlari bilan qiling: telefonda slayder bilan kerakli qiymatga tushish qiyin. Qiymatni kiritish tugagach bir necha yuz millisekund kechikish bilan qoʻllang.
Filtrlar tartibini alifbo boʻyicha emas, foydalanish chastotasi boʻyicha belgilang. Birinchi ikki-uch filtr haqiqatan ishlatiladiganlari boʻlsin.
Qoʻllanadigan filtr kombinatsiyalarini va boʻsh natijalarni loglang. Tovarsiz tez-tez uchraydigan kombinatsiya — yo assortimentdagi boʻshliq, yo alohida landing sahifasiga nomzod.