Skip to content

Commit 666dea5

Browse files
Improve Site Defaults performance with many sites (#624)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent e52e01f commit 666dea5

2 files changed

Lines changed: 28 additions & 21 deletions

File tree

src/SiteDefaults/LocalizedSiteDefaults.php

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Support\Collection;
66
use Statamic\Data\HasOrigin;
7+
use Statamic\Facades\Blink;
78
use Statamic\Facades\Blueprint;
89
use Statamic\Facades\Site;
910
use Statamic\SeoPro\Events\SiteDefaultsSaved;
@@ -98,23 +99,25 @@ public function blueprint(): \Statamic\Fields\Blueprint
9899

99100
public function augmented(): array
100101
{
101-
$contentValues = Blueprint::make()
102-
->setContents(['tabs' => ['main' => ['sections' => Fields::new()->getConfig()]]])
103-
->fields()
104-
->addValues($this->values()->all())
105-
->augment()
106-
->values();
107-
108-
$siteDefaultValues = $this->blueprint()
109-
->fields()
110-
->addValues($this->values()->all())
111-
->augment()
112-
->values();
113-
114-
return $siteDefaultValues
115-
->merge($contentValues)
116-
->only($this->keys()->all())
117-
->all();
102+
return Blink::once("seo-pro::site-defaults.augmented.{$this->locale}", function () {
103+
$contentValues = Blueprint::make()
104+
->setContents(['tabs' => ['main' => ['sections' => Fields::new()->getConfig()]]])
105+
->fields()
106+
->addValues($this->values()->all())
107+
->augment()
108+
->values();
109+
110+
$siteDefaultValues = $this->blueprint()
111+
->fields()
112+
->addValues($this->values()->all())
113+
->augment()
114+
->values();
115+
116+
return $siteDefaultValues
117+
->merge($contentValues)
118+
->only($this->keys()->all())
119+
->all();
120+
});
118121
}
119122

120123
public function editUrl(): string

src/SiteDefaults/SiteDefaults.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,18 @@ public static function get(): Collection
3232
public static function origins($origins = null): Collection|bool
3333
{
3434
if (func_num_args() === 0) {
35-
return Site::all()
36-
->mapWithKeys(fn ($site) => [$site->handle() => null])
37-
->merge(Addon::get('statamic/seo-pro')->settings()->get('site_defaults_sites', []))
38-
->map(fn ($origin) => empty($origin) ? null : $origin);
35+
return Blink::once('seo-pro::site-defaults-origins', function () {
36+
return Site::all()
37+
->mapWithKeys(fn ($site) => [$site->handle() => null])
38+
->merge(Addon::get('statamic/seo-pro')->settings()->get('site_defaults_sites', []))
39+
->map(fn ($origin) => empty($origin) ? null : $origin);
40+
});
3941
}
4042

4143
Addon::get('statamic/seo-pro')->settings()->set('site_defaults_sites', $origins)->save();
4244

4345
Blink::forget('seo-pro::site-defaults');
46+
Blink::forget('seo-pro::site-defaults-origins');
4447

4548
return true;
4649
}
@@ -67,6 +70,7 @@ public static function save(LocalizedSiteDefaults $localized): bool
6770
Addon::get('statamic/seo-pro')->settings()->set('site_defaults', $data)->save();
6871

6972
Blink::forget('seo-pro::site-defaults');
73+
Blink::forget("seo-pro::site-defaults.augmented.{$localized->locale()}");
7074

7175
return true;
7276
}

0 commit comments

Comments
 (0)