Исходный код плагина:
Назвать можно как угодно, у меня он называется: CacheControl
if($modx->context->get('key') != "mgr" && $modx->resource->get('cacheable') && !$modx->user->isMember(array('Administrator','Content Manager'))) { $expires = 60*60*24*1; header("Pragma: public"); header("Cache-Control: maxage=".$expires); header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT'); $dateLastmodif = strtotime($modx->resource->get('editedon')); if(empty($dateLastmodif)) $dateLastmodif = strtotime($modx->resource->get('createdon')); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $dateLastmodif) . ' GMT'); }
Плагин необходимо активировать на событие: OnWebPagePrerender
В результате будут сгенерированны заголовки вида:
Pragma: public Cache-Control: maxage=86400 Expires: Fri, 20 Sep 2013 07:54:32 GMT Last-Modified: Thu, 19 Sep 2013 07:54:28 GMT
Данные о последних изменениях будут браться из MODx, хранение кэша задаётся на одни сутки. Этим значением можно управлять, изменяя значение контейнера $expires (время хранения кэша в секундах).
Недавно коллеги по цеху подсказали о существовании пакета microcache, который более развёрнуто делает то же самое. И написан давным давно. Я по сути "изобрёл колесо".