Прошу помочь с очисткой кэша определенной страницы
Добрый день. на сайте каждый пользователь имеет профиль и может менять фон в своем профиле. После смены фона и переадресации на страницу профиля показывается старый фон пока не перезагрузить страницу. Очистку кэша ресурса пробую вызывать в phostHooks сниппета UpdateProfile.
В шаблоне профиля вызываю редактирование фона сайта следущим способом:
Код сниппета clearProfileCache.
Не понимаю почему после выполнения данного сниппета кэш сбрасывается только после повторной перезагрузки. хоть двойной редирект вызывай…
Прошу подскажите советом, или объясните что не так. если надо ссылку на сайт приложу.
Пользовался поиском, пробовал разное, но эффекта так и не достиг.
В шаблоне профиля вызываю редактирование фона сайта следущим способом:
[[!UpdateProfile? &preHooks=`updatebg.image` &postHooks=`clearProfileCache`]]
<form class="form-horizontal well callme" action="[[~[[*id]]]]" method="post" enctype="multipart/form-data" id='register_form' >
<div id="register">
[[+login.update_success:eq=`1`:then=`<div style="width: 617px;
padding: 12px 12px 1px; background: #e9ffe9; color: #030; margin-left: 0;
margin-bottom: 15px;"><p>[[%login.profile_updated? &namespace=`login` &topic=`updateprofile`]]</p>
<script type="text/javascript">
setTimeout('document.getElementById("timer_inp").innerHTML = "через <b>1</b> секунды"', 1000);
setTimeout('document.getElementById("timer_inp").innerHTML = "<b>прямо сейчас</b>"', 2000);
setTimeout('document.location.href="[[~2]]"', 2000);
</script>
<p>Вы будете перенаправлены в <a href="[[~2]]">личный кабинет</a> <span id="timer_inp">через <b>2</b> секунд</span></p>
</div>`:else=``]]
[[+message]]<input type="hidden" style="width: 450px;" name="fullname" id="fullname" value="[[+fullname]]">
<div style="overflow:hidden; width:670px;margin:auto;">
<img src='[[!+bg_image]]' id="preview" style="float:left; padding-right: 20px;padding-bottom:20px;" />
<div class="reg_line" style="position: relative; height: 90px;padding:0;">
<p>Выбрать фоновое изображение</p>
<div class="file_upload" style="left:0px;top:40px;">
<button type="button">выберите файл</button>
<div>Файл не выбран</div>
<input type="file" accept="image/*" onchange="handleFiles(this.files)" name="bg_image" id="bg_image" value="[[!+bg_image]]" maxlength="100000" />
</div>
<span class="help-block text-error">
[[!+error.bg_image]]
</span>
</div>
<input type="submit" value="Сменить Фон" class="btn primary" style="width: 165px; height: 30px;" />
</div>
</div>
</form>Где сначала происходит загрузка фонового изображения и прикрепления к пользователю в extended поле. И уже по окончании загрузки в postHooks вызывается снипет очистки кэша страницы профиля пользователя (и личного кабинета).Код сниппета clearProfileCache.
$resource=$modx->getObject('modResource',2);
$resource->_contextKey = $resource->context_key;
$cache = $modx->cacheManager->getCacheProvider($modx->getOption('cache_resource_key', null, 'resource'));
$key = $resource->getCacheKey();
$cache->delete($key, array('deleteTop' => true));
$cache->delete($key);Идентификатор профиля = 2. В нем отключено кэширование (галка «Кэшируемый» не стоит).Не понимаю почему после выполнения данного сниппета кэш сбрасывается только после повторной перезагрузки. хоть двойной редирект вызывай…
Прошу подскажите советом, или объясните что не так. если надо ссылку на сайт приложу.
Пользовался поиском, пробовал разное, но эффекта так и не достиг.
Комментарии: 14
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
uploads/[[#ID пользователя]]/bg.jpg. Меняются только ID пользователей, а для одного профиля новый фон так и остается с таким же именем файла. сделано это чтобы фоновые изображения не переполняли диск, да и нет смысла в названии файла подругому. Единственное что может быть изменно в имени это расширение файла.
Может эта информация будет важна. Имя файла остается неизменным.
Никаких phpthumbof не использую. программно произвожу обрезку изображение через php сценарий в момент орбаботки загружаемого файла.
Может ли это быть связано с редиректом используя Javascript или нет.
Может стоит через makeurl и Redirect modx попробовать…
Или как сделать тикеты по умолчанию не кэшируемыми… хотя из за одного поля это глупо. Это поле определяет Статус, по умолчанию оно пустое, а позже когда нажимаю Выбрать исполнителя статус присваивается «В исполнении». На всех страницах он отображается а на странице заказа нет… спасает полная очистка кэша.