Кратко изложить не поулчится, но каждый разработчик точно от этого пострадает

так что - плюсуем.
Итак, внутри кеша, часто делаем такую конструкцию:
if ($arParams['PAGE_COUNT']>0)
$arResult['NAV_STRING'] = $rsElements->GetPageNavStringEx($navComponentObject, '', $arParams['PAGER_TEMPLATE'], false); |
А теперь представим, что на наш пока еще не кешированный список зашли с какой-то ссылкой, например, r1=yandex&r2=direct.
Что сделала постраничка? Она засчитала r1=yandex&r2=direct как важные параметры и КАЖДОМУ номеру страницы в постраничке подмешала данные параметры. Получили
PAGEN_1=1&r1=yandex&r2=direct
PAGEN_1=2&r1=yandex&r2=direct
PAGEN_1=3&r1=yandex&r2=direct
.... (1)
Теперь все это дело кешируется, и что мы получаем? Что любой пользователь, попавший на список БЕЗ r1=yandex&r2=direct в СВОЕЙ ссылке, в ссылках получит блок (1). Получается, рекламная кампания r1=yandex&r2=direct испорчена совершенно левыми посетителями.
Как решить эту проблему, я даже не знаю... передавать GetPageNavStringEx значимые параметры, и, если они переданы, учитывать только их?
Имхо, для таких вещей нужно делать настройку с перечислением значимых параметров.
Можно, например, добавить параметр для всех компонентов PAGER_PARAMS - в котором бы был массив параметров, которые могут присутствовать в постраничке текущего компонента.
Если не пустой параметр, то использовать его убирая все лишнее.
Можно это даже как хак сделать, чтобы в настройках компонентов не светился (только для разработчиков через код вызова компонента).