Имеется модуль комментариев с постраничной навигацией. Пример навигации брал из стандартного компонента news.list
1. Если я нахожусь на первой странице (у меня их уже, скажем, две) и добавляю комментарий, то он будет добавлен в конец, при этом я останусь на первой странице. Целесообразно ли при добавлении делать редирект к только что добавленному комментарию и как это правильнее всего сделать?
2. Проблема с кешированием. Пример брал из того же компонента news.list:
Само кеширование обнуляется при добавлении коммента:
Возвращаясь к 1-му пункту, при наличии нескольких страниц и при добавлении коммента на первой, обновится кеш только первой страницы. При переходе на последнюю мы увидим наш добавленный комментарий только после того, как руками обнулим кеш.
Вопрос: как при добавлении коммента на первой странице (или не любой другой НЕ последней) обнулить кеш сразу на всех?
3. Тоже с кешированием. Вынес обработчик ajax-запросов в отдельный PHP файл (удаление, активация комментария к примеру). Как при определенном событии (удаление комментария например) сбросить кеш для страницы с этим комметарием (ну или может правильнее будет для всех страниц) ?
Пр тегированный кеш читал и пробовал сделать с ним, но с такой битриксовской постраничой навигацией ничего полезного не получилось.
Спасибо!
| Код |
|---|
$res = Comments::GetList(array("ID" => "ASC"), $arFilter);
$res->NavStart($arParams["NEWS_COUNT"]);
$arResult["NAV_STRING"] = $res->GetPageNavStringEx($navComponentObject, $arParams["PAGER_TITLE"], $arParams["PAGER_TEMPLATE"], $arParams["PAGER_SHOW_ALWAYS"]);
$arResult["NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData();
$arResult["NAV_RESULT"] = $res; |
1. Если я нахожусь на первой странице (у меня их уже, скажем, две) и добавляю комментарий, то он будет добавлен в конец, при этом я останусь на первой странице. Целесообразно ли при добавлении делать редирект к только что добавленному комментарию и как это правильнее всего сделать?
2. Проблема с кешированием. Пример брал из того же компонента news.list:
| Код |
|---|
$CACHE_ID = serialize(array(($arParams["CACHE_GROUPS"]==="N"? false: $USER->GetGroups()), $bUSER_HAVE_ACCESS, $arNavigation));
if($this->StartResultCache(false, $CACHE_ID))
{
$comments[] = array...
$this->EndResultCache();
}
$this->IncludeComponentTemplate();
|
| Код |
|---|
$this->ClearResultCache($CACHE_ID); |
Возвращаясь к 1-му пункту, при наличии нескольких страниц и при добавлении коммента на первой, обновится кеш только первой страницы. При переходе на последнюю мы увидим наш добавленный комментарий только после того, как руками обнулим кеш.
Вопрос: как при добавлении коммента на первой странице (или не любой другой НЕ последней) обнулить кеш сразу на всех?
3. Тоже с кешированием. Вынес обработчик ajax-запросов в отдельный PHP файл (удаление, активация комментария к примеру). Как при определенном событии (удаление комментария например) сбросить кеш для страницы с этим комметарием (ну или может правильнее будет для всех страниц) ?
Пр тегированный кеш читал и пробовал сделать с ним, но с такой битриксовской постраничой навигацией ничего полезного не получилось.
Спасибо!