if (!isset(self::$_nav[$variant][$locale])) {
\Barryvdh\Debugbar\Facade::startMeasure('nav', 'Init Navigation object ' . $variant . ', ' . $locale);
self::$_nav[$variant][$locale] = Cache::tags(self::CACHE_TAG)->remember('navigation_' . $variant . '_' . $locale . '_' . $viewOffline, 43200, function () use ($locale, $variant, $viewOffline) {
- \Barryvdh\Debugbar\Facade::startMeasure('donav', 'Do Navigation object ' . $variant . ', ' . $locale);
- $nav = new Item();
- $nav->setLocale($locale);
- $nav->setVariant($variant);
- $nav->initFromDatabase('#root', $viewOffline);
- \Barryvdh\Debugbar\Facade::stopMeasure('donav');
- return $nav;
+
+ return Cache::lock('navigation_' . $variant . '_' . $locale . '_' . $viewOffline, 60)->get(function () use ($locale, $variant, $viewOffline) {
+ \Barryvdh\Debugbar\Facade::startMeasure('donav', 'Do Navigation object ' . $variant . ', ' . $locale);
+ $nav = new Item();
+ $nav->setLocale($locale);
+ $nav->setVariant($variant);
+ $nav->initFromDatabase('#root', $viewOffline);
+
+ \Barryvdh\Debugbar\Facade::stopMeasure('donav');
+ return $nav;
+ });
+
});
\Barryvdh\Debugbar\Facade::stopMeasure('nav');
}