RSForm! Pro не работает при включенном кэше Joomla

Некоторое время назад столкнулся со странностями на одном сайтов, сделанных на Joomla. Странность заключалась в следующем: на одной из страниц в текст материала была вставлена форма компонента RSForm. Эта форма прекрасно отображалась, но при попытке ее отправить в браузере клиента просто снова открывалась эта же страница, никакого сообщения об удачной отправки данных не появлялось. Письма администратору и клиенту так же не отправлялись, и в БД не было вообще никаких упоминаний о том, что эта форма когда-либо была заполнена.
После небольшого гугления выяснилось, что во всем виновато кэширование. Вот что по этому поводу говорится на официальном сайте компонента RS Form:

Чтобы понять, почему так происходит, нужно разобрать, как работает кэш Joomla (для примера будем использовать случай, когда форма встроена в текст статьи):

  • Загружается статья;
  • Плагин RSForm запускается и заменяет плейсхолдер в тексте статьи на соответствующую форму;
  • Система кэширования Joomla «запоминает», как выглядит страница и сохраняет это представление в кэше.
  • При следующих обращениях к этой странице первые два этапа пропускаются, и страница сразу загружается из кэша. Это ускоряет работу сайта, но так же это значит, что страница не будет загружать плагин RSForm. Форма будет отображаться на странице, так как ее внешний вид сохранен в кэше, но ее функционал — нет.

Единственное решение, которое предлагается — отключить кэширование.

Однако, как быть, если совсем отключать кэширование нельзя? Ведь при этом может сильно возрасти нагрузка на хостинг.  Мне известны следующие варианты:

  • Добавить в index.php шаблона строки
    $cache = &JFactory::getCache('com_rsform');
    $cache->clean();

    В таком случае при каждом обращении к сайту будет происходить очистка кэша RSForm. На мой взгляд, это не очень оптимальный метод, ведь форма все рано будет кэшироваться, а потом каш будет очищаться — получаем лишние действия. Еще один минус: этот код сработает только в том случае, когда доступ к форме осуществляется по адресу вида index.php?option=com_rsform.Если на сайте используются SEF-ссылки, этот метод не сработает.

  • Более сложный вариант, найденный мной у «ИТ Осминогов»: в файле /plugins/system/cache.php в каждой функции добавили условие, которое запрещает выполнение, если запрошена страница, содержащая форму (для проверки страницы использовался $_SERVER[‘REQUEST_URI’] ). Этот вариант более предпочтительный, однако требует некоторых знаний PHP и принципов работы CMS Joomla.

3 комментария

  1. Привет меня зовут Дамир, я тоже из города Набережные Челны занимаюсь SEO-продвижением, дизайном макетов сайтов и адаптивной версткой сайтов. Учитывая что ты веб-программист а я веб-дизайнер может пообщаемся вместе или как нибудь скооперируемся, или просто пообщаемся? мой ВК vk.com/damir.gabdrahimov

  2. Pingback: tamoxifen

  3. Visitors to school can find many questionnaires woman of any age and nationality performing body work massage in the city NY.

    Women are able not only to give pleasure in this way, but also to the strong semi-gentlemen. Girls perform japanese a massage that will produce a Strong gender a vivid impression.
    Prices for sensual massage depends on qualification Beauties and the skills that she possesses. Before making a choice, carefully study the prices for services and customer feedback about the work of one or another masseur specialist. We are sure that the search for a real professional masseur will be crowned with success and you will be satisfied with the quality of our services. Women are skilled workers in their field and they will help you relax after a hard day.

    Massage room NY. : Nuru Massage New York

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *