Есть нормализованная переменная $uri, но нет нормализованной $args, но она реально нужна, попробую объяснить.
Наш ключ к кешу и REQUEST_URI к бекенду = $uri$is_args$args, нормализованный $uri очень удобен, но не нормализованный $args создает проблемы - дубликаты в кеше и флуд на бекенд.
Например в наших логах, есть такие запросы:
/?id=1&id=100
/?id=2&id=100
/?id=3&id=100
Как видите, перемененная id указанна два раза, в РНР будет значения $_GET["id"] = 100, эти запросы генерят боты, возможно это оплаченный HTTP флуд, все эти запросы идут на бекенд, отрабатывается бизнес логика по id=100, кеш пухнет, бекенд нагружен флудом.
Сейчас мы на бекенде нормализуем QUERY_STRING и делаем редирект, но правильней если бы ответ брался из кеша Nginx, для этого нужно чтобы в ключе кеша был нормализованный $args.
Кроме ботов, есть ещё много случаев, например разный способ юрл кодировки
/?q=мир+май
/?q=мир%20;май
/?q=мир май // UTF-8
Разная последовательность одинаковых параметров:
/?sort=desc&filter=price
/?filter=price&sort=desc
/?filter=price&sort=desc&
Это все уменьшает эффективность кеша.
Будет очень полезно если $args станет нормализованным, а в $query_string оставить первоначальное значения, тогда каждый сможет использовать то что ему нужно.
Спасибо.
Наш ключ к кешу и REQUEST_URI к бекенду = $uri$is_args$args, нормализованный $uri очень удобен, но не нормализованный $args создает проблемы - дубликаты в кеше и флуд на бекенд.
Например в наших логах, есть такие запросы:
/?id=1&id=100
/?id=2&id=100
/?id=3&id=100
Как видите, перемененная id указанна два раза, в РНР будет значения $_GET["id"] = 100, эти запросы генерят боты, возможно это оплаченный HTTP флуд, все эти запросы идут на бекенд, отрабатывается бизнес логика по id=100, кеш пухнет, бекенд нагружен флудом.
Сейчас мы на бекенде нормализуем QUERY_STRING и делаем редирект, но правильней если бы ответ брался из кеша Nginx, для этого нужно чтобы в ключе кеша был нормализованный $args.
Кроме ботов, есть ещё много случаев, например разный способ юрл кодировки
/?q=мир+май
/?q=мир%20;май
/?q=мир май // UTF-8
Разная последовательность одинаковых параметров:
/?sort=desc&filter=price
/?filter=price&sort=desc
/?filter=price&sort=desc&
Это все уменьшает эффективность кеша.
Будет очень полезно если $args станет нормализованным, а в $query_string оставить первоначальное значения, тогда каждый сможет использовать то что ему нужно.
Спасибо.