OPTIMALIZATION: cache widget area content for one pageload
This commit is contained in:
@@ -5,11 +5,28 @@ use App\Models\WidgetArea;
|
||||
|
||||
class WidgetAreas
|
||||
{
|
||||
/**
|
||||
* @var array list of inicialized widget areas
|
||||
*/
|
||||
protected static $widgetAreas = [];
|
||||
|
||||
/**
|
||||
* Renderer for whole widget area.
|
||||
*
|
||||
* @param $uniqueCode
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function render($uniqueCode)
|
||||
{
|
||||
$widgetArea = new WidgetArea();
|
||||
if (isset(self::$widgetAreas[$uniqueCode])) {
|
||||
echo self::$widgetAreas[$uniqueCode];
|
||||
return;
|
||||
}
|
||||
|
||||
$widgets = $widgetArea->getWidgets($uniqueCode)->get();
|
||||
$widgetArea = new WidgetArea();
|
||||
$widgets = $widgetArea->getWidgets($uniqueCode)
|
||||
->get();
|
||||
|
||||
$content = '';
|
||||
foreach ($widgets as $widget) {
|
||||
@@ -19,6 +36,9 @@ class WidgetAreas
|
||||
$content .= call_user_func([$presenter, 'render'], json_decode($widget->settings));
|
||||
}
|
||||
|
||||
// cache this widget area
|
||||
self::$widgetAreas[$uniqueCode] = $content;
|
||||
|
||||
echo $content;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user