Если вы управляете личным блогом, небольшим интернет‑магазином, открываете офисный сайт или просто хотите понять, насколько быстро вы будете находить нужные файлы в системе, то это чтение для вас. Сайт с 100‑пунктовым архивом прост и быстрый. С сайтом, где храним 300 000 статей, поиск может стать узким местом. Разберём, как быстро искать в четырёх самых распространённых CMS, какие нюансы влияют на скорость и как избежать замедлений.
WordPress использует один центральный индекс в таблице wp_posts. Поиск выполняется через SQL‑SELECT по полям post_title и post_content . Сравнительные тесты показывают среднее время возврата – 50–70 мс при 10 000 записей, но возрастает до 2–3 с при 300 000 записей без индексов.
WP_REDIS или Memcached для кэширования query‑результатов.Astra Search – он делает запросы к внешнему поисковому движку.| Фактор | Результат |
|---|---|
| Обычный поиск | 5 с |
| С кэшем + внешним движком | 0,3 с |
В Joomla! поиск проводит поиск через таблицу #__content. По умолчанию запросы обрабатываются PHP‑скриптом, а затем возвращаются в браузер. Среднее время – 80–100 мс на 20 000 записей.
EasyFinder, которое строит вложенный словарь и использует SQL LIKEfulltext поле, если используете MySQL 5.6+.Drupal хранит контент в таблицах node, node_revision и taxonomy_term_data. Поиск осуществляется через views и, при необходимости, Elasticsearch. Стандартный поиск – лучший вариант для 50 000 записей, но к 200 000 растёт до 4‑5 с. Плюс, кэширование запросов через Redis сокращает время до 800 мс.
TYPO3 использует собственный движок поиска, который обращается к таблице sys_folder и pages. По запросу, включая pages.title, скорость – 70-120 мс при 25 000 страниц. При 150 000 страниц – 5‑6 с.
Пример вызова поискового API в TYPO3: SELECT * FROM pages WHERE title LIKE '%keyword%'. Если хочется ускорить, добавлять fulltext index и подключать внешний каталог, например Solr.
Проанализировав тесты, можно сказать следующее: скорость поиска в CMS напрямую зависит от количества данных, способа индексации и наличия кэша. Если ваш сайт растёт, планируйте переход на внешние поисковые движки ещё до того, как поиск станет узким местом. Применяйте кэш, индексируйте ключевые поля и не бойтесь менять решение, если оно уже не делает свою работу в срок. Таким образом ваш сайт будет отзывчив в любой ситуации.
