В таком случае наверно лучше использовать OnWebPag

В таком случае наверно лучше использовать OnWebPageComplete. Это самое последнее событие, и как видишь, без учета закеширован или нет.

public function _postProcess() {
    if ($this->resourceGenerated && $this->getOption('cache_resource', null, true)) {
        if (is_object($this->resource) && $this->resource instanceof modResource && $this->resource->get('id') && $this->resource->get('cacheable')) {
            $this->invokeEvent('OnBeforeSaveWebPageCache');
            $this->cacheManager->generateResource($this->resource);
        }
    }
    $this->invokeEvent('OnWebPageComplete');
}

Черновой код плагина:

<?php
switch($modx->event->name){
    case 'OnWebPageComplete':
        $key = "resource/".$modx->resourceIdentifier; 
        $output = & $modx->resource->_output;
        $modx->cacheManager->set($key, $output);
        break;
        
    default:;
}

Но сейчас еще буду проверять насколько этот кеш годится. Ведь там php return. Скорее всего надо будет переопределять кеш-провайдер, чтобы сохранять чистый HTML.