OnLoadWebDocument, как узнать, что ресурс из кеша?
Собственно нужно, чтобы код плагина не выполнялся, если ресурс из кеша. Есть какие-либо маркеры этого?
Комментарии: 4
Для чего мне это нужно.
Задача плагина — взять не распарсенный content ($modx->resource->get('content');), найти в нем картинки, те, у которых реальный размер больше отображаемого (заданный через width/height) — пропустить через phpthumbon (или подобный), заменить на шаблон типа <img src=«thumb_image»....>. Далее $modx->resource->set('content', $content);… Сам код написан и работает.
Проблема в том, что, когда ресурс берется из кеша — $modx->resource->get('content') — получает данные с уже замененными картинками. Временно проблему решил проверкой папки в которой картинка, но хотелось бы сделать правильно. Подскажите, пожалуйста
Задача плагина — взять не распарсенный content ($modx->resource->get('content');), найти в нем картинки, те, у которых реальный размер больше отображаемого (заданный через width/height) — пропустить через phpthumbon (или подобный), заменить на шаблон типа <img src=«thumb_image»....>. Далее $modx->resource->set('content', $content);… Сам код написан и работает.
Проблема в том, что, когда ресурс берется из кеша — $modx->resource->get('content') — получает данные с уже замененными картинками. Временно проблему решил проверкой папки в которой картинка, но хотелось бы сделать правильно. Подскажите, пожалуйста
можно например вот так
github.com/modxcms/revolution/blob/fbf126690f6ce903faeaeb9f1d958211fc2203c9/core/model/modx/processors/resource/data.class.php#L62-L73
github.com/modxcms/revolution/blob/fbf126690f6ce903faeaeb9f1d958211fc2203c9/core/model/modx/processors/resource/data.class.php#L62-L73
public function getCacheSource() {
$this->resource->_contextKey= $this->resource->get('context_key');
$buffer = $this->modx->cacheManager->get($this->resource->getCacheKey(), array(
xPDO::OPT_CACHE_KEY => $this->modx->getOption('cache_resource_key', null, 'resource'),
xPDO::OPT_CACHE_HANDLER => $this->modx->getOption('cache_resource_handler', null, $this->modx->getOption(xPDO::OPT_CACHE_HANDLER)),
xPDO::OPT_CACHE_FORMAT => (integer) $this->modx->getOption('cache_resource_format', null, $this->modx->getOption(xPDO::OPT_CACHE_FORMAT, null, xPDOCacheManager::CACHE_PHP)),
));
if ($buffer) {
$buffer = $buffer['resource']['_content'];
}
return !empty($buffer) ? $buffer : $this->modx->lexicon('resource_notcached');
}
то есть проверяется есть ли _content, если есть ресурс из кеша
можно вообще сделать так наверно
$isCache = $modx->resource->get('_content');
if (!is_null($isCache)) {
// из кеша
}
Спасибо, работает
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.