Drupal: запрет кэширования страницы модуля

Столкнулся недавно с такой проблемой: на сайте www.carhelpinfo.ru, работающим под Drupal, есть форма для поиска автомобильных запчастей, реализованная мной в виде отдельного модуля. Доступ к этой форме должен быть у всех пользователей, даже анонимных.

Для ускорения работы сайта используется Memcached. С включением опции кэширования страниц для анонимов сайт открывается практически мгновенно. Но вот беда — при этом не работает форма поиска: после запроса анонимному пользователю выдается не страница с результатами, а старая закэшированная страница.

Выходом из этой ситуации может быть использование в модуле своего собственного сегмента кэша и использование cahe_clear_all(). Эта функция может принимать в качестве параметра идентификатор сегмента кэша, который надо очистить. Если его не указывать — будет произведена очистка всего кэша. Но в таком случае при генерации страницы придется каждый раз тратить время на то, чтобы очистить сегмент кэша и записать туда новую версию страницы, которая при следующем вызове вновь будет перезаписанна.

Чтобы избежать этого, я просто стал передавать данные формы методом GET. Таким образом, при каждом запросе URL страницы меняется, и она генерируется снова. А если пользователь запросит то, что кто-то уже искал, то ему будет отдана страница из кэша.

Минусом такого метода является "загрязнение" URL, но в данном конкретном случае для сайта www.carhelpinfo.ru это не имеет значения.

Один комментарий

  1. isotretinoin with overnight delivery Isotretinoin Cod Accepted Website Comprar Cialis 24h Cialis Aurochem Sildenafil Citrate 100mg Taking Cialis With Viagra

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

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