Как заставить WordPress игнорировать GET-параметры при кешировании страниц?
Ситуация: есть сайт на WordPress, небольшой статейник. Грузится не очень быстро (500-600мс), с кешом значения гораздо лучше (20-30мс). Проблема возникает в момент захода на страницу вида example.com/page?foo=12345 - страницы с GET-параметрами хоть и кешируются большинством популярных плагинов, тем не менее, каждая из них считается уникальной, хотя реально страница на GET-параметры не реагирует. Возникло опасение, что злоумышленник может заДОСить сайт запросами вида ?foo=1 + ?foo=2 + ?foo=3 и т.д.
Вопрос - как лучше этого избежать? Дропать GET-параметры, найти какой-то чуть менее популярный плагин кеширования, который это предусмотрел, использовать объектный кеш, etc.?
surge игнорит гет параметры по умолчанию.
Если вы используете такие плагины как WP Super Cache или W3 Total Cache, вы можете настроить их так, чтобы они игнорировали определенные GET параметры или параметры по умолчанию.
В WP Super Cache: перейдите в "Advanced" и в разделе "Accepted Filenames & Rejected URIs", добавьте строку ?foo=* в поле "Strings to reject" чтобы игнорировать GET параметры.
В W3 Total Cache: это немного сложнее: перейдите в раздел “Performance” > “Page Cache” и добавьте в поле "Never cache the following pages" значение ?foo=* .
Дикое решение, но может оно вам подойдет
Если вы хотите полностью игнорировать все GET-запросы, вы можете добавить следующий фильтр в файл functions.php вашей темы:
Тем не менее, важно понимать что применять данное решение следует осторожно и только если вы абсолютно уверены, что GET-параметры не используются на вашем сайте (включая плагины и админку).
--
Более надежное решение - использование реверс-прокси, например NGINX, для кеширования содержимого. Это позволит вам контролировать свое кеширование на уровне сервера и более гибко управлять параметрами URL. Но подобное решение требует более высокого уровня технических навыков и возможно недоступно при использовании шаред хостинга.
Если кто-то захочет задосить, то спсобов очень много и решать проблему доса нужно будет уже как-то подругому, например проксировать запросы через Claudflare или подобные CDN. Это уже другая история...