- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Есть таблица категорий. Эти самые категории используются с проекте в разных целях:
1. Вывод категорий и подкатегорий в качестве меню навигации
2. Вывод дерева категорий списка публикаций или публикации отдельно
3. и много много разных мелких назначений, необходимых для гибкой структуры сайта.
Для удобного использования и данных категорий, создал массив этих самых категорий, который позволяет в нужном месте получить данные категории и подкатегории, имея тот или иной параметр (ID категории, alt_name или ID родителя).
Все это прекрасно работает, но ведь каждый раз обращаться в БД для построения такого рода массива - большая нагрузка на БД. Соответственно, массив можно сохранять в кэше и вызывать данные из файла, вместо БД.
Но из-за недостатка практических знаний в данной отрасли, возник вопрос: как будет работать эта схема и как она отразиться на производительности проекта, если категорий будет очень много? Одно дело, если категорий штук 100. А если их более тысячи? Например, реализация структуры областей/городов/поселков таким образом...
Сильно ли повлияет на производительность системы, если использовать такие массивы? Заранее благодарю за ответы.
на современных ссд дисках 1000 будет работать достаточно быстро
да и эксперимент можно провести. это не сложно
я кешировал id в serialize около 50 000 и нормально потом все вытаскивается. быстро
вытаскивать данные из базы, чтобы положить их в файл - это не самая лучшая шутка юмора. можно конечно, но сначала надо посмотреть, нет ли чего получше. тот же мемкэш, редис. если данные нужны в пределах одного вызова, то можно придумать что-нибудь глобальное. ну а если вариантов нет, то можно и в файл
farenheit, у вас очень простой sql запрос. Смысл его кешировать?
Кешировать стоит "тяжёлые" вложенные запросы с join-нами, group by и т.п.
farenheit, да, достаточно глобально вычитывать таблицу категорий и сохранить в массиве.
1000 – это уже перебор. Навряд ли вы будете 1000 категорий/подкатегорий за раз в меню на всех страницах отображать.
---------- Добавлено 24.02.2016 в 15:46 ----------
Можно попробовать сохранять массив в виде php-кода в файле и потом инклудить его, но целостность данных потеряется, поэтому добавьте прослойку в виде функций, проверяющих наличие запрашиваемой по id категории в тек. версии массива, чтобы например catname(100500) при отсутствии запрошенной категории возвращала в качестве имени строку «Категория 100500».
---------- Добавлено 24.02.2016 в 15:51 ----------
По-хорошему «кэш» нужно чистить при редактировании таблицы категорий, чтобы даже минутных задержек в актуализации данных не возникало.
Ничего не надо делать. Запросы к БД (особенно такие простые) и так обычно кэшируются базой данных. Так что с большой долей вероятности в вашем случае диск каждый раз не дергается.