Приветствую.
Пишу модуль, хранящий данные в своей таблице, ориентировочно предполагаю 500-1000 записей.
Данные редко обновляются, но планируется их частое чтение, запрос возвращает 5-15 записей за раз.
Соответствено, возникла мысль кешировать результаты запросов, чтобы не насиловать БД.
результаты гугления меня опечалили, никакой конкретики, одни советы включить мемкеш/буст/еакселератор/и т.д.
я так понимаю, что в функции, возвращающей результат запроса, надо заюзать какой-нибудь &drupal_static(__FUNCTION__);
отсыпьте плз. ссылок на маны для их вдумчивого раскуривания.
Комментарии
drupal_static и вообще статическое кеширование тебе нужно в случае если одни и теже данные из модуля будут нужны n-раз во время загрузки страницы.
А так, имхо, не те объёмы чтобы париться
да, скорее всего именно так и получится - в таблице хранятся зависимости между id термина таксономии (раздел каталога) и филдами нод, находящихся в этом разделе каталога, по ним потом будут строиться раскрытые фильры/фасеты и прочая светотень, располагающаяся на странице термина (раздела каталога)
имхо, как раз тот случай, когда надо кешировать
Если хранить кэш в БД - то всё равно придётся делать запрос в базу. Так что либо тянуть 1 строку кэша,либо 5-15 строк из твоей таблицы. Шило на мыло.
Или не в БД тогда хранить.
Кэшируй уж тогда сформированные фасеты,или что там у тебя.
Преждевременная оптимизация - корень всех бед.
это в случае cache_set()
т.к. данные хранятся в одной таблице и джойнов в запросе нет, то в общем-то без разницы, к какой таблице его делать: с данными или кешем, такое кеширование не имеет смысла
drupal_static(), насколько я понял, не пишет в БД, а хранит результат в статических переменных, т.е. в памяти
поправьте, если неправ
так и есть, работает в пределах одного запроса. Как и во многих случаях, за громким названием функции апи стоят банальные пхп фичи
Решение этой проблемы давно реализовано на уровне СУБД, т.е. результаты последних запросов и без того кешируются.
да, есть такое
в чем же тогда цимес от использования статического кеширования?
в Вашем случае, как раз в том, что бы не делать этих запросов вообще(вернее только 1 запрос на страницу), хоть они и к кешу БД, но тем не менее это запросы, однако