Несовместимость Механизма Кеширования Drupal и Модуля CAPTCHA

Неприятный сюрприз преподнёс модуль CAPTCHA, о котором шла речь в статье «CAPTCHA для Drupal: анти-спам защита и юзабилити». Соответственно, и остальные модули, которые зависят от него, имеют эту же "особенность". Оказывается, что если на странице присутствует капча-тест — Drupal не кеширует эту страницу вне зависимости от системных настроек кеширования!

Предупреждение о несовместимости кеширования и модуля CAPTCHAПредупреждение о несовместимости кеширования и модуля CAPTCHA

Это, в принципе, логично, так как для каждого пользователя нужно выдавать уникальную капчу, что по своей сути не совместимо с кешированием страницы. Логично, однако далеко не очевидно. Да и на странице проекта CAPTCHA найти данную информацию можно с трудом, а никаких явных и заметных предупреждений об этом не давалось ( на данный момент предупреждение всё же появилось).

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

Таким образом, для разрешения этой проблемы есть три варианта последующих действий:

1) Смириться и оставить капчу в форме добавления комментария. Если вопрос нагрузки на сервер и производительности остро не стоит, а трафик сайта небольшой либо состоит преимущественно из авторизованных пользователей, то это может быть допустимо. Но! Кэширование позволяет выдавать страницы для анонимных пользователей почти моментально (за сотые доли секунды вместо 1-3 секунд, которые требуются для генерации страницы "на лету" веб-сервером), поэтому с точки зрения оптимизации гораздо лучше подыскать иной вариант.

2) Перенести форму добавления комментирования на отдельную страницу. В таком случае пользователь будет должен нажать на ссылку "Добавить комментарий", чтобы добраться до нужной формы, а значит — часть комментариев вы не получите, т.к. некоторым станет просто лень переходить на отдельную страницу, чтобы оставить комментарий. 

3) Воспользоваться альтернативной защитой от спама. Благо, не капчей единой жив интернет, поэтому альтернативы есть.

Путём комбинации двух альтернативных анти-спам модулей в Drupal можно добиться весьма и весьма хорошей защищённости — читайте о них в материале «Альтернатива CAPTCHA для Drupal».

Нет оценок
Об авторе: Сергей “Treidge” Данченко

АватарСергей "Treidge" Данченко — автор блога 3DG.Me, вольный 3D-художник и разработчик игр, веб-разработчик на Drupal и человек-оркестр с опытом в некоторых других областях. Личное кредо — "хочешь сделать что-нибудь хорошо, сделай это сам". В моменты особого вдохновения пишет стихи и играет в волейбол. Основные профессиональные инструменты — Autodesk Maya, Autodesk Mudbox и Adobe Photoshop. Без ума от индюков и попугаев. Спасибо за внимание, заходите снова!

Copyright © 2010-2013 Сергей "Treidge" Данченко. Свяжитесь со мной, если у вас есть вопросы или предложения. Тема основана на BlogBuzz от Antsin.com