OPTIMALIZATION: cache widget area content for one pageload
This commit is contained in:
@@ -5,11 +5,28 @@ use App\Models\WidgetArea;
|
|||||||
|
|
||||||
class WidgetAreas
|
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)
|
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 = '';
|
$content = '';
|
||||||
foreach ($widgets as $widget) {
|
foreach ($widgets as $widget) {
|
||||||
@@ -19,6 +36,9 @@ class WidgetAreas
|
|||||||
$content .= call_user_func([$presenter, 'render'], json_decode($widget->settings));
|
$content .= call_user_func([$presenter, 'render'], json_decode($widget->settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cache this widget area
|
||||||
|
self::$widgetAreas[$uniqueCode] = $content;
|
||||||
|
|
||||||
echo $content;
|
echo $content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user