Можно ли закэшировать виджет по принципу PageCache?
В основном советуют кэшировать фиджеты как фрагменты, но данный кэш применяется уже в представлении и логика вызова виджета все равно отрабатывается каждый раз.
Так же можно закэшировать то место где вызывается виджет, но опять же виджет может стоять уже в десятках мест и переписывать кучу кода ради одного виджета не хочется, так же Виджет может работать вне приложения Yii
В голову приходит только костыльный вариант Поместить виджет внутрь другого, и уже там кэшировать его как фрагмент
class MyWidget extends yii\base\Widget
{
public static function widget($config = [])
{
$data = Yii::$app->cache->get('key'); // логику формирования ключа нужно сделать исходя из задачи
if ($data === false) {
$data = parent::widget($config);
Yii::$app->cache->set('key', $data);
}
return $data;
}
}