Jump to content

Подбор товара по параметрам , фильтры (динамически изменяемые в зависимости от условий подбора).


Recommended Posts

Всем добрый день.

Есть вопрос о том как (каким способом - идеей) реализовать фильтр

подобный как на http://hotline.ua/computer/noutbuki-netbuki/

 

Поясню : Выбираем один (или несколько )критерий подбора и фильтр перестраивается в зависимости от того какие товары удовлетворяют его параметрам. Т.е. выбрав только нетбуки - остаются фильтры под диагонали экранов 9, 10 , 12 , 13 другие - недоступны , т.к. с большим экраном уже ноутбуки.

При этом есть возможность как более детально углубленно производить подбор из комплекта фильтра, т.е. например: все модели нетбуков (всех диагоналей) но только фирм Эйсер и Асус которые имеют беспроводный интерфейс WiFi.

 

Почему неподходит тот фильтр который в базовой поставке симплы?

Т.к. слишком сложный запрос при 1000 товарах занимает около 1 секунды при ненагруженном хостинге.

Что для меня очень критично...

 

Понятно что структура таблиц которые будут использоваться для ускорения (оптимизации) запроса должны быть немного другими.  (Вопрос какими на ВАШ взгляд).

Хранить все критерии в одной отдельной таблице - нецелесообразно , отдельными таблицами - как например

Табл 1 - Свойства участвующие в фильтре

Табл 2 - Таблица соответствий свойств и товаров

И т.д.

 

Трудность пока в золотой середине между сложностью выборки  при подборе фильтра и скоростью работы запроса.

Высокая скорость - достигается при сложной структуре таблиц и резком увеличении кол-ва таблиц (практически на каждый параметр свойства фильтра - отдельная таблица).
Если менять логику поиска и уменьшать таблицы участвующие в запросе - тогда усложняется запрос и соответсвенно уменьшается скорость выполнения запроса.

 

Прошу помощи подсказать идею формирования сложных фильтров с минимальными затратами ресурсов хостинга как по памяти , так и по места и структуры БД.

 

 

Еще одно малое отступление от темы - почему неиспользуется механизм кеширования? Директория кеша - есть но она пуста постоянно.

Как включить механизм кеширования для частного случая фильтров подбора (именно из-них происходит торможение БД). Может кеширование спасет.

И кстати повторяющиеся запросы к БД тоже можно былобы кешировать хоть в массив и записывать в файл кеша.

 

Буду рад дельным советам - при детальных вопросах поясню подробнее что именно хочу получить.

Заранее спасибо.

Link to post
Share on other sites

я бы не сказал что стоит сильно оптимизировать. На данном механизме можно построить нормальные фильтры, понятно дело что скорее всего обычного хостинга не хватит, что придется брать VPS. У меня лично в поддержке есть 5 проектов где количество товаров от 7тыс - 22тыс / ~4тыс уников. Везде стоит VPS 1x2.6Ghz, 512 Мб ОП. Полет нормальный.

Link to post
Share on other sites

Для osben

Если не затруднит показать пример такого сайта с динамическим фильтром как на Хотлайне - без кеша так сказать без изменения структуры БД и дополнительных таблиц.

 

И еще открытый вопрос кеширования определенной части страницы или всей (некотрых страниц, разделов ) сайта.

Как включить механизм кеширования (без мемкеша ) - есть ли он (механизм кеширования) вообще в КМС или его надо добалять.

(напомню что директория cache - в базовой комплектации идет но она пустая).

Для чего ? Хочу кешировать постоянно повторяющиеся запросы к БД и особо ТЯЖЕЛЫЕ запросы, потом кроном чистить или при аптедте таблиц (добавлении / изменении товара) или по времени 1-2 раза в сутки.

 

Опять таки буду рад дельным и обосновательным ответам.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...