Добрый день, вопрос думаю интересует многих новичков и не только, хотелось бы узнать каким образом можно было обновлять кэш конкретного документа, каталога, подкаталога и так далее. Зачем это нужно? Ну затем, что если весь сайт кэшируется, а у нас в магазине допустим решили к товару добавить цену или изменить её, а так как страницы изначально закэшированы, то необходимо обновить(или удалить) кэш конкретного товара(документа) ну и естественно все те каталоги и подкаталоги где выводится данный товар(документ)
Никак. Обсуждалось это здесь (и не только).
Ну почему сразу рубить корень, ведь мы можем создать кэш конкретной страницы или раздела а вот как это другой вопрос, я приведу тут такой код который позволяет нам создавать кэш страницы или каталога $id = 9;
file_get_contents($this->modx->makeUrl($id, 'web', '', 'full')); а для того что бы проверить можно
Я даже не буду объяснять про зависимости и т.п. Если вам ооочень хочется двигаться именно в этом направлении - это ваше право.
про зависимости, что я имею ввиду, у меня есть страница с товаром на которой выводится данные из tv параметров, если в админке изменить цену в tv price, то так как страница изначально имеет кэш, то хоть как не обновляй страницу в клиентской части, то цена будет старой а если ручками удалить кэш страницы товара и в консоле вызвать тот код выше приведённый, то когда перейдём на страницу товара и обновим там уже новая цена, остался другой не решенный вопрос как удалить кэш страницы товара и подкаталога, но на этот вопрос я думаю можно найти решение
Вот и капай modCacheManage::clearCache() и т.п.
Спасибо за наводку, это на перспективу оставлю, так как времени на тесты и поиски тоже нужно не мало, но я нашел код который слегка дополнил одной строчкой и всё заработало, теперь можно удалять нужный нам кэш по указанному id, находку взял с сайта Василия Наумкина, я думаю он не будет против))) сам код: $id=9;
$resource=$modx->getObject('modResource',$id);
$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);
теперь можно указав id удалить, а потом заново с обновлёнными данными создать кэш страницы, теперь можно весь код объединить и использовать по своему усмотрению
По опыту скажу: это путь в никуда. Локальные решения, завязанные на жестком кешировании - это серьезный удар по всей логике сайта. Простой пример: единые прайсы. У вас товары - это отдельные страницы, а прайс - тоже отдельная страница. Почистили кеш страницы товара - а кеш прайса остался. Его надо тоже очищать - дополнительная логика. Потом на каком-нибудь крупном проекте это ощутите. Лучше прокачивайтесь в направлении снижения нагрузки на сайт в целом. И после сброса кеша 0.3-0.4 секунды - это вполне достигаемый результат. Смотрите вот даже на этот сайт. Здесь на одной странице куча блоков, в которых вывод данных из довольно большой базы, все с проверками прав и т.п., и практически все БЕЗ кеша, в риалтайме. Для разных пользователей с разными правами разные данные выводятся. Сайт разве тормозит?
Я согласен, что появляются очень много зависимостей, и я уже с этим сталкнулся, так как одно изменение требует эти обновления и на других страницах. да наткнулся на сайты которые просто уговаривали кэшировать для того что бы сайт просто летал. Необходимо оптимизировать и переписать функционал всего сайта, что бы отказаться от кэширования, и по этому случаю, изучаю ваши разработки которые в основном не используют кэширование и хотелось бы иметь, неплохую документацию по вашим продуктам и в одном месте, да кстати замерил даную страницу http://developers.google.com/speed/pagespeed показывает По результатам тестирования время ответа вашего сервера составило 0,61 секунды Да и спасибо за быстрый отзыв на вопросы, и за комментарии и советы
да кстати замерил даную страницу http://developers.google.com/speed/pagespeed показывает Это время общее, включая пинг и т.п. А есть замеры на стороне самого сервера. Вот данные этой страницы: Memory: 13.0902 Mb TotalTime: 0.4274 s Но здесь хоть и не большая, но социальная сеть. Это один из крупнейших проектов, который приходилось делать (с учетом всех политик безопасностей, инфоблоков и т.п.). А средний корпоративный сайт или магазин вполне может работать быстрее. да наткнулся на сайты которые просто уговаривали кэшировать для того что бы сайт просто летал Берите на вооружение эту технологию :).