Всё началось с установки модуля video_filter. Немного деталей. Кто не знае, video_filter даёт возможность вставки в текст конструкций вида [video:URL] и подменяет их на объект с подключенным флэш-плеером например с того же Ютуба. Модуль суперский, но дело не в этом. В README к модулю прочитал как можно добавить свой кодек или ресурс к существующим, выполнил эту нехитрую процедуру, подключив локальный flowplayer, затем полюбовался изяществу решения, повосхищался в очередной раз гибкостью Друпала и нажал reload. И тут мои восторги существенно уменьшились - ибо flowplayer со страницы пропал! При этом плееры, которые были уже встроены в video_filter никуда не исчезли! Начались упорные разборки...
Для интеграции с flowplayer я использовал модуль flowplayer_api и соответственно когда создавал свой hook и callback для video_filter, то использовал вызовы функций из этого модуля, такие как theme('flowplayer', ....). Я обратил внимание, что flowplayer появлялся каждый раз, когда я очищал кэш и при следующем reload снова пропадал. Покопавшись в доках, я понял, что моё расширение к video_filter выполнялось ДИНАМИЧЕСКИ, в то время как остальные плееры выдавали статический HTML. Поскольку я использовал для размешения [video:URL] на странице формат ввода Strict HTML, который КЭШИРУЕТСЯ, то казалось бы и сказки конец, но тут есть два вопроса:
1. Почему у меня кэшируется значения выдаваемые моим расширением, если кэширование в настройках производительности ВЫКЛЮЧЕНО? Совсем выключено! Это баг или фича? Оно действительно кэшируется, ибо появляются записи в таблице cache_filter.
2. Уж если у меня всё это дело кэшируется, каким образом мне таки сделать так, чтобы я мог нормально работать? Почему у меня этот кэш не подхватывается? Как его подхватить? Я вышел из положения довольно кривым способом: создал собственный формат ввода: Special HTML и вручную в БД поставил настройку, что он не кэшируется. После чего всё работает.
Комментарии
Фича. Кэш фильтров работает всегда и настройки производительности на него не влияют. По крайней мере у меня на Друпал 7 так происходит.
При этом кэширование не будет использоваться для форматов ввода, у которых хотя бы один фильтр не кэшируемый (см. hook_filter для Д6 или hook_filter_info для D7).