CP sidebar checks every site for each navigation
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Ambito
- backend, performance
Direzione di ricerca
Leggi src/CP/Navigation/CoreNav.php nella sezione del filtro e della mappatura mostrati nell’issue, poi confronta la chiamata proposta con la ricerca su un singolo sito introdotta in #14988. Conferma che la barra laterale controlla la disponibilità della navigazione nel sito selezionato senza esaminare l’albero di ogni sito. Il lavoro è completato quando le richieste CP evitano le query ripetute per ogni sito e la visibilità della navigazione rimane corretta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug description
The CP gets slower as you add sites, even on pages unrelated to navigation.
I seeded 1,218 sites and 3 navigations. Each CP request ran ~3,670 queries. The queries came from src/CP/Navigation/CoreNav.php, which checks every site's tree to find out whether a navigation exists in the selected site.
Proposed fix
This follows the same approach as #14988, which made existsIn() a single-site lookup.
Before:
->filter(function ($nav) { // line 115
return User::current()->can('configure navs')
|| $nav->sites()->contains(Site::selected()->handle());
})
->map(function ($nav) {
$availableInSelectedSite = Site::hasMultiple()
? $nav->sites()->contains(Site::selected()->handle())
: true;
After:
->filter(function ($nav) {
return User::current()->can('configure navs')
|| $nav->existsIn(Site::selected()->handle());
})
->map(function ($nav) {
$availableInSelectedSite = Site::hasMultiple()
? $nav->existsIn(Site::selected()->handle())
: true;
How to reproduce
- Use multisite with a large number of sites (I seeder 1,218).
- Create a few navigations with a tree in one site.
- Log in as a super user and open any CP page.
Logs
Environment
Environment
Laravel Version: 13.35.0
PHP Version: 8.5.10
Composer Version: 2.10.2
Environment: local
Debug Mode: ENABLED
Maintenance Mode: OFF
Timezone: UTC
Locale: en
Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED
Drivers
Cache: file
Database: mariadb
Logs: stack / daily
Mail: log
Queue: redis
Session: file
Storage
public/storage: NOT LINKED
Laradocs
AI Chat: disabled
Banner: disabled
Caching: enabled
Docs Path: docs
Route Prefix: /communications/cms/help
Search Driver: auto
Theme: auto
Statamic
Addons: 4
License Key: Set
Sites: 1218 (Abbott, Fadel and Denesik, Abbott-Wiegand, Abernathy Group, and 1215 more)
Stache Watcher: Enabled (auto)
Static Caching: Disabled
Version: 6.35.1 PRO
Statamic Addons
statamic/audit-log: 1.1.1
statamic/collaboration: 2.0.1
statamic/eloquent-driver: 5.12.2
statamic/seo-pro: 7.15.1
Statamic Eloquent Driver
Addon Settings: eloquent
Asset Containers: eloquent
Assets: eloquent
Blueprints: eloquent
Collection Trees: eloquent
Collections: eloquent
Entries: eloquent
Fieldsets: file
Form Submissions: eloquent
Forms: eloquent
Global Sets: eloquent
Global Variables: eloquent
Navigation Trees: eloquent
Navigations: eloquent
Revisions: eloquent
Sites: eloquent
Taxonomies: eloquent
Terms: eloquent
Tokens: eloquent
Installation
Existing Laravel app
Additional details
No response
- Lingua principale
- PHP
- Stelle
- 4.9k
- Fork
- 647
- Merge medio
- 1g 17h
- PR unite (30g)
- 111
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di statamic/cms
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
accessibility
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
antlers
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
caching nocache
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
statamic/cms#15643 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
navigations
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di statamic/cms
Issue simili
-
[Enhancement] Add a dark-bg Tailwind variantForse già presa @bd-viget l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
vigetlabs/wordpress-site-starter#306 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Spomky-Labs/pwa-bundle#476 ·
-
domain/discovery
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
code4romania/cpc#64 ·
I maintainer di solito rispondono entro 1 giorno
-
Admin search throws for permissions added through Admin.generalIndexItems('permissions', ...)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno