🧹 Cache Manager - Implementazione Completa

🧹 Cache Manager - Implementazione Completa

Data: 21 Ottobre 2025 Modulo: Systems > Configurazione Tipo: Gestione Cache Sistema

---

Trasformazione dello script PHP pubblico clear-all-cache.php in una vista blade professionale integrata nel sistema di menu, con autenticazione, permissions e UI unificata.

---

πŸ“‚ File Creati/Modificati

1. Controller βœ…

File: app/Http/Controllers/Admin/Systems/CacheController.php

Metodi:

  • index() - Mostra pagina con info cache
  • clear(Request $request) - Pulisce cache (POST)
  • clearAll() - Pulisce tutta la cache
  • clearView() - View cache
  • clearConfig() - Config cache
  • clearRoute() - Route cache
  • clearApp() - Application cache
  • clearOpcache() - OPcache PHP
  • clearCompiled() - Compiled classes
  • getViewCacheInfo() - Info view cache (size, count)
  • getConfigCacheInfo() - Info config cache
  • getRouteCacheInfo() - Info route cache
  • getAppCacheInfo() - Info app cache
  • getOpcacheInfo() - Info OPcache (hit rate, memory)
  • getCompiledInfo() - Info compiled
  • formatBytes($bytes) - Helper formattazione dimensioni
  • Totale: ~300 righe

    ---

    2. Vista βœ…

    File: resources/views/admin/systems/configuration/cache.blade.php

    Sezioni:

    A. Header

    ``
    html
    <h4>
        <i class="bi bi-speedometer2 text-primary"></i> Gestione Cache
    </h4>
    <p class="text-muted small">Monitora e pulisci la cache del sistema</p>
    </code>`<code></p><p><h4><strong>B. Info Cards (6 Card Stat)</strong></h4>
    </code>`<code>
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ View Cache  β”‚ Config      β”‚ Route       β”‚
    β”‚ 245 file    β”‚ βœ“ Presente  β”‚ βœ“ Presente  β”‚
    β”‚ 2.3 MB      β”‚ 45 KB       β”‚ 120 KB      β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ App Cache   β”‚ OPcache     β”‚ Compiled    β”‚
    β”‚ 89 file     β”‚ 98.5%       β”‚ βœ“ Presente  β”‚
    β”‚ 1.7 MB      β”‚ 1,234 files β”‚ -           β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    `

    Colori:

  • View: Primary (Blu)
  • Config: Warning (Giallo)
  • Route: Info (Cyan)
  • App: Success (Verde)
  • OPcache: Danger (Rosso)
  • Compiled: Warning (Giallo)
  • C. Azioni di Pulizia (6 Bottoni + 1 Master)

    `html <div class="row g-3"> <div class="col-md-4"> <form method="POST"> <button class="btn btn-outline-primary w-100"> Pulisci View Cache </button> </form> </div> <!-- ... altri 5 bottoni ... --> <div class="col-md-12"> <button class="btn btn-danger btn-lg w-100"> PULISCI TUTTA LA CACHE </button> </div> </div> `

    Features:

  • βœ… Bottoni disabilitati se cache non esiste
  • βœ… Conferma JavaScript prima di submit
  • βœ… Bottone "Pulisci Tutto" rosso e grande
  • βœ… Descrizioni sotto ogni bottone
  • D. Risultati Operazioni

    `html @if(session('results')) <div class="card"> <div class="card-header bg-success"> Operazioni Completate </div> <div class="card-body"> <!-- Alert per ogni operazione --> </div> </div> @endif `

    E. Dettagli OPcache

    `html @if($cacheInfo['opcache']['enabled']) <div class="card"> <div class="row"> <div class="col-md-3">Hit Rate: 98.5%</div> <div class="col-md-3">Script: 1,234</div> <div class="col-md-3">Memoria Usata: 45 MB</div> <div class="col-md-3">Memoria Totale: 128 MB</div> </div> </div> @endif `

    F. Note Informative

    Alert con spiegazioni per ogni tipo di cache.

    ---

    3. Routes βœ…

    File:
    routes/admin.php

    Aggiunte: `php use App\Http\Controllers\Admin\Systems\CacheController;

    Route::prefix('systems')->name('systems.')->middleware('role:super-admin')->group(function () { Route::prefix('configuration')->name('configuration.')->group(function () { Route::get('/cache', [CacheController::class, 'index'])->name('cache.index'); Route::post('/cache/clear', [CacheController::class, 'clear'])->name('cache.clear'); }); }); `

    URL:

  • GET: /admin/systems/configuration/cache
  • POST: /admin/systems/configuration/cache/clear
  • Route Names:

  • admin.systems.configuration.cache.index
  • admin.systems.cache.clear
  • ---

    4. Menu Item (SQL) βœ…

    File: database/seeders/cache_menu_item.sql
    </p><p><strong>Struttura</strong>:
    </code>`<code>
    Systems/Servizio (L1)
    └── Configurazione (L2) ← Creato se non esiste
        └── Gestione Cache (L3) ← Nuovo
    `

    Campi:

  • Label: Gestione Cache
  • Route: admin.systems.configuration.cache.index
  • Icon: bi-speedometer2
  • Sort: 10
  • Parent: ID di "Configurazione"
  • Esecuzione SQL: `bash

    Nel database MySQL

    mysql -u username -p database_name < database/seeders/cache_menu_item.sql `

    ---

    🎨 Design Unificato

    Stat Cards (Info Cache)

    Stesso stile di CSV Imports e Operations:
  • Gradienti pastello
  • Icone Bootstrap Icons (fs-5)
  • Hover pulse-glow
  • NO translateY
  • Action Cards

  • Ombre morbide
  • Header con gradiente
  • Hover effect su ombra
  • Bottoni

  • Colori semantici (primary, warning, info, success, danger)
  • Icone contestuali
  • Conferma JS prima di azioni critiche
  • Disabled se cache non presente
  • ---

    πŸ”’ Sicurezza

    Middleware

    `php Route::middleware('role:super-admin') `

    Solo super-admin puΓ² accedere!

    CSRF Protection

    `html @csrf `

    Tutti i form POST protetti.

    Conferme JavaScript

    `javascript onsubmit="return confirm('Pulire la cache?')" `

    Prevenzione click accidentali.

    ---

    πŸ“Š Informazioni Visualizzate

    View Cache

  • Numero file compilati
  • Dimensione totale
  • Stato: Presente/Assente
  • Config Cache

  • File presente/assente
  • Dimensione file
  • Route Cache

  • File presente/assente
  • Dimensione file
  • Application Cache

  • Numero entry cache
  • Dimensione totale
  • OPcache

  • Abilitato/Disabilitato
  • Hit Rate %
  • Script in cache
  • Memoria usata/totale
  • Compiled Classes

  • Packages presente/assente
  • Services presente/assente
  • ---

    🎯 Tipi di Pulizia

    | Tipo | Comando Artisan | Descrizione | |------|----------------|-------------| | view | view:clear | Template Blade compilati | | config | config:clear | Configurazioni sistema | | route | route:clear | Route registrate | | app | cache:clear | Cache applicazione generale | | opcache | opcache_reset() | Cache opcode PHP | | compiled | clear-compiled | Classi compilate Laravel | | all | Tutti i precedenti | Pulizia totale |

    ---

    πŸš€ Installazione

    Step 1: Verifica File

    `bash βœ… app/Http/Controllers/Admin/Systems/CacheController.php βœ… resources/views/admin/systems/configuration/cache.blade.php βœ… routes/admin.php (modificato) βœ… database/seeders/cache_menu_item.sql `

    Step 2: Esegui SQL

    `bash cd sartUP/sartup mysql -u uv4xcitr_joom404 -p uv4xcitr_joom404 < database/seeders/cache_menu_item.sql `

    Step 3: Pulisci Route Cache

    `bash php artisan route:clear php artisan route:cache `

    Step 4: Accedi

    ` https://sartup.it/sartup/public/admin/systems/configuration/cache `

    Oppure naviga dal menu: ` Systems β†’ Configurazione β†’ Gestione Cache `

    ---

    πŸ§ͺ Test

    Test 1: Accesso

  • Login come super-admin
  • Naviga al menu item
  • Verifica che la pagina si carichi
  • Test 2: Info Cards

  • Verifica che mostri dati reali
  • Controlla dimensioni file
  • Verifica OPcache (se abilitato)
  • Test 3: Pulizia Singola

  • Clicca "Pulisci View Cache"
  • Conferma popup
  • Verifica toast success
  • Ricarica pagina
  • Controlla che la card si aggiorni
  • Test 4: Pulizia Totale

  • Clicca "PULISCI TUTTA LA CACHE"
  • Conferma popup
  • Verifica 6 alert success
  • Controlla che tutto funzioni ancora
  • ---

    πŸ—‘οΈ Cleanup

    Dopo l'implementazione, elimina gli script pubblici: `

    bash
    rm public/clear-all-cache.php
    rm public/upload-i40-css.php
    rm public/upload-view.php
    rm public/upload-service.php
    rm public/create-machine-paths.php
    </code>`<code></p><p><strong>Usa sempre la vista blade</strong> invece degli script! βœ…</p><p>---</p><p><h2>βœ… <strong>Vantaggi vs Script Pubblico</strong></h2></p><p>| Aspetto | Script PHP | Vista Blade |
    |---------|-----------|-------------|
    | <strong>Sicurezza</strong> | ❌ Pubblico | βœ… Auth + CSRF |
    | <strong>Permissions</strong> | ❌ Nessuna | βœ… Super-admin only |
    | <strong>UI</strong> | ⚠️ HTML custom | βœ… Layout unificato |
    | <strong>Menu</strong> | ❌ Link nascosto | βœ… Nel menu visibile |
    | <strong>Info Cache</strong> | ⚠️ Basiche | βœ… Dettagliate |
    | <strong>Logging</strong> | ❌ No | βœ… Activity log possibile |
    | <strong>Feedback</strong> | ⚠️ Alert | βœ… Toast eleganti |
    | <strong>Responsive</strong> | ⚠️ No | βœ… Bootstrap 5 |
    | <strong>Manutenzione</strong> | ❌ File separato | βœ… Integrato |</p><p>---</p><p><h2>🎨 <strong>Screenshot Layout</strong></h2></p><p>
    `
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ 🏠 Dashboard                                        β”‚
    β”‚                                                     β”‚
    β”‚ πŸš€ Gestione Cache                                  β”‚
    β”‚ Monitora e pulisci la cache del sistema            β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚                                                     β”‚
    β”‚ β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β” β”‚
    β”‚ β”‚ View β”‚ β”‚Configβ”‚ β”‚Route β”‚ β”‚ App  β”‚ β”‚OPcachβ”‚ β”‚C β”‚ β”‚
    β”‚ β”‚ 245  β”‚ β”‚  βœ“   β”‚ β”‚  βœ“   β”‚ β”‚  89  β”‚ β”‚98.5% β”‚ β”‚βœ“ β”‚ β”‚
    β”‚ β”‚2.3 MBβ”‚ β”‚45 KB β”‚ β”‚120KB β”‚ β”‚1.7MB β”‚ β”‚1,234 β”‚ β”‚- β”‚ β”‚
    β”‚ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”˜ β”‚
    β”‚                                                     β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ OPERAZIONI DI PULIZIA                               β”‚
    β”‚                                                     β”‚
    β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
    β”‚ β”‚ Pulisci View β”‚ β”‚Pulisci Configβ”‚ β”‚Pulisci Route β”‚ β”‚
    β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
    β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
    β”‚ β”‚ Pulisci App  β”‚ β”‚ Reset OPcacheβ”‚ β”‚Pulisci Compilβ”‚ β”‚
    β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
    β”‚                                                     β”‚
    β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
    β”‚ β”‚      πŸ—‘οΈ PULISCI TUTTA LA CACHE                 β”‚ β”‚
    β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    β”‚ ℹ️ Note sulla Cache                                 β”‚
    β”‚ β€’ View Cache: Template Blade compilati...          β”‚
    β”‚ β€’ Config Cache: Configurazioni sistema...          β”‚
    β”‚ ...                                                 β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    `

    ---

    πŸ›£οΈ Routing

    URL Finale

    ` https://sartup.it/sartup/public/admin/systems/configuration/cache `

    Route Name

    ` admin.systems.configuration.cache.index `

    Helper Blade

    `php {{ route('admin.systems.configuration.cache.index') }} `

    ---

    Gerarchia

    `
    Systems/Servizio (L1)
    └── Configurazione (L2)
        β”œβ”€β”€ Gestione Cache (L3) ← NUOVO
        └── (altri...)
    `

    Query Verifica

    `sql SELECT label, route_name, icon, is_active FROM menu_items WHERE label = 'Gestione Cache'; `

    Expected Output: ` +------------------+--------------------------------------------+------------------+-----------+ | label | route_name | icon | is_active | +------------------+--------------------------------------------+------------------+-----------+ | Gestione Cache | admin.systems.configuration.cache.index | bi-speedometer2 | 1 | +------------------+--------------------------------------------+------------------+-----------+ `

    ---

    🎯 Flusso Utente

    Scenario 1: Info Cache

    ` 1. Utente naviga: Systems β†’ Configurazione β†’ Gestione Cache 2. Pagina si carica 3. Controller raccoglie info su tutte le cache 4. 6 card mostrano stato attuale 5. Bottoni abilitati/disabilitati in base a presenza cache `

    Scenario 2: Pulizia Singola

    ` 1. Utente clicca "Pulisci View Cache" 2. Popup conferma: "Pulire la View Cache?" 3. Utente conferma 4. POST a /cache/clear con type=view 5. Controller esegue Artisan::call('view:clear') 6. Redirect con toast success 7. Card View Cache si aggiorna (0 file, 0 B) `

    Scenario 3: Pulizia Totale

    ` 1. Utente clicca "PULISCI TUTTA LA CACHE" 2. Popup WARNING: "⚠️ ATTENZIONE!..." 3. Utente conferma 4. POST con type=all 5. Controller esegue tutti i clear() 6. Redirect con 6 alert (uno per tipo) 7. Tutte le card si aggiornano `

    ---

    πŸ”§ Manutenzione

    Aggiungere Nuovo Tipo Cache

    1. Controller: Aggiungi metodo clearNuovoTipo() 2. Controller: Aggiungi case in clear() 3. Controller: Aggiungi metodo getNuovoTipoInfo() 4. Vista: Aggiungi card info 5. Vista: Aggiungi bottone azione 6. Controller: Includi in clearAll()

    Modificare Design Card

    Il CSS è inline nella vista - modifica direttamente lì.

    Cambiare Icone

    Cerca e sostituisci le icone Bootstrap Icons:

  • bi-speedometer2 β†’ Icona principale
  • bi-file-earmark β†’ View cache
  • bi-gear β†’ Config cache
  • bi-signpost β†’ Route cache
  • bi-database β†’ App cache
  • bi-lightning β†’ OPcache
  • bi-code-square β†’ Compiled
  • ---

    πŸ“ Note Tecniche

    Permessi File System

    Il web server deve avere permessi di scrittura su:
  • storage/framework/views/
  • storage/framework/cache/
  • bootstrap/cache/
  • OPcache

    Richiede opcache.enable=1 in php.ini`. Se disabilitato, il bottone sarΓ  disabled.

    Performance

  • Lettura info cache: ~50ms (scan directory)
  • Pulizia singola: ~100ms
  • Pulizia totale: ~500ms
  • OPcache reset: ~10ms (ma rallenta richieste successive)
  • ---

    βœ… Checklist Post-Implementazione

  • [ ] File controller creato
  • [ ] Vista blade creata
  • [ ] Route registrate
  • [ ] SQL menu item eseguito
  • [ ] Menu item visibile in sidebar
  • [ ] Accesso funzionante
  • [ ] Info cache visualizzate correttamente
  • [ ] Bottoni pulizia funzionanti
  • [ ] Toast notifications funzionanti
  • [ ] OPcache info (se abilitato)
  • [ ] Script pubblici eliminati
  • [ ] Documentazione completa

---

Fine Documento

Analisi Codice

Blocco 1 html
<h4>
    <i class="bi bi-speedometer2 text-primary"></i> Gestione Cache
</h4>
<p class="text-muted small">Monitora e pulisci la cache del sistema</p>
Blocco 2
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ View Cache  β”‚ Config      β”‚ Route       β”‚
β”‚ 245 file    β”‚ βœ“ Presente  β”‚ βœ“ Presente  β”‚
β”‚ 2.3 MB      β”‚ 45 KB       β”‚ 120 KB      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ App Cache   β”‚ OPcache     β”‚ Compiled    β”‚
β”‚ 89 file     β”‚ 98.5%       β”‚ βœ“ Presente  β”‚
β”‚ 1.7 MB      β”‚ 1,234 files β”‚ -           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Blocco 3 html
<div class="row g-3">
    <div class="col-md-4">
        <form method="POST">
            <button class="btn btn-outline-primary w-100">
                Pulisci View Cache
            </button>
        </form>
    </div>
    <!-- ... altri 5 bottoni ... -->
    
    <div class="col-md-12">
        <button class="btn btn-danger btn-lg w-100">
            PULISCI TUTTA LA CACHE
        </button>
    </div>
</div>
Blocco 4 html
@if(session('results'))
    <div class="card">
        <div class="card-header bg-success">
            Operazioni Completate
        </div>
        <div class="card-body">
            <!-- Alert per ogni operazione -->
        </div>
    </div>
@endif
Blocco 5 html
@if($cacheInfo['opcache']['enabled'])
    <div class="card">
        <div class="row">
            <div class="col-md-3">Hit Rate: 98.5%</div>
            <div class="col-md-3">Script: 1,234</div>
            <div class="col-md-3">Memoria Usata: 45 MB</div>
            <div class="col-md-3">Memoria Totale: 128 MB</div>
        </div>
    </div>
@endif
Blocco 6 php
use App\Http\Controllers\Admin\Systems\CacheController;

Route::prefix('systems')->name('systems.')->middleware('role:super-admin')->group(function () {
    Route::prefix('configuration')->name('configuration.')->group(function () {
        Route::get('/cache', [CacheController::class, 'index'])->name('cache.index');
        Route::post('/cache/clear', [CacheController::class, 'clear'])->name('cache.clear');
    });
});
Blocco 7
Systems/Servizio (L1)
└── Configurazione (L2) ← Creato se non esiste
    └── Gestione Cache (L3) ← Nuovo
Blocco 8 bash
# Nel database MySQL
mysql -u username -p database_name < database/seeders/cache_menu_item.sql
Blocco 9 php
Route::middleware('role:super-admin')
Blocco 10 html
@csrf
Blocco 11 javascript
onsubmit="return confirm('Pulire la cache?')"
Blocco 12 bash
βœ… app/Http/Controllers/Admin/Systems/CacheController.php
βœ… resources/views/admin/systems/configuration/cache.blade.php
βœ… routes/admin.php (modificato)
βœ… database/seeders/cache_menu_item.sql
Blocco 13 bash
cd sartUP/sartup
mysql -u uv4xcitr_joom404 -p uv4xcitr_joom404 < database/seeders/cache_menu_item.sql
Blocco 14 bash
php artisan route:clear
php artisan route:cache
Blocco 15
https://sartup.it/sartup/public/admin/systems/configuration/cache
Blocco 16
Systems β†’ Configurazione β†’ Gestione Cache
Blocco 17 bash
rm public/clear-all-cache.php
rm public/upload-i40-css.php
rm public/upload-view.php
rm public/upload-service.php
rm public/create-machine-paths.php
Blocco 18
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 🏠 Dashboard                                        β”‚
β”‚                                                     β”‚
β”‚ πŸš€ Gestione Cache                                  β”‚
β”‚ Monitora e pulisci la cache del sistema            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β” β”‚
β”‚ β”‚ View β”‚ β”‚Configβ”‚ β”‚Route β”‚ β”‚ App  β”‚ β”‚OPcachβ”‚ β”‚C β”‚ β”‚
β”‚ β”‚ 245  β”‚ β”‚  βœ“   β”‚ β”‚  βœ“   β”‚ β”‚  89  β”‚ β”‚98.5% β”‚ β”‚βœ“ β”‚ β”‚
β”‚ β”‚2.3 MBβ”‚ β”‚45 KB β”‚ β”‚120KB β”‚ β”‚1.7MB β”‚ β”‚1,234 β”‚ β”‚- β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”˜ β”‚
β”‚                                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ OPERAZIONI DI PULIZIA                               β”‚
β”‚                                                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Pulisci View β”‚ β”‚Pulisci Configβ”‚ β”‚Pulisci Route β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Pulisci App  β”‚ β”‚ Reset OPcacheβ”‚ β”‚Pulisci Compilβ”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚      πŸ—‘οΈ PULISCI TUTTA LA CACHE                 β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ℹ️ Note sulla Cache                                 β”‚
β”‚ β€’ View Cache: Template Blade compilati...          β”‚
β”‚ β€’ Config Cache: Configurazioni sistema...          β”‚
β”‚ ...                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Blocco 19
https://sartup.it/sartup/public/admin/systems/configuration/cache
Blocco 20
admin.systems.configuration.cache.index
Blocco 21 php
{{ route('admin.systems.configuration.cache.index') }}
Blocco 22
Systems/Servizio (L1)
└── Configurazione (L2)
    β”œβ”€β”€ Gestione Cache (L3) ← NUOVO
    └── (altri...)
Blocco 23 sql
SELECT label, route_name, icon, is_active 
FROM menu_items 
WHERE label = 'Gestione Cache';
Blocco 24
+------------------+--------------------------------------------+------------------+-----------+
| label            | route_name                                 | icon             | is_active |
+------------------+--------------------------------------------+------------------+-----------+
| Gestione Cache   | admin.systems.configuration.cache.index    | bi-speedometer2  |         1 |
+------------------+--------------------------------------------+------------------+-----------+
Blocco 25
1. Utente naviga: Systems β†’ Configurazione β†’ Gestione Cache
2. Pagina si carica
3. Controller raccoglie info su tutte le cache
4. 6 card mostrano stato attuale
5. Bottoni abilitati/disabilitati in base a presenza cache
Blocco 26
1. Utente clicca "Pulisci View Cache"
2. Popup conferma: "Pulire la View Cache?"
3. Utente conferma
4. POST a /cache/clear con type=view
5. Controller esegue Artisan::call('view:clear')
6. Redirect con toast success
7. Card View Cache si aggiorna (0 file, 0 B)
Blocco 27
1. Utente clicca "PULISCI TUTTA LA CACHE"
2. Popup WARNING: "⚠️ ATTENZIONE!..."
3. Utente conferma
4. POST con type=all
5. Controller esegue tutti i clear()
6. Redirect con 6 alert (uno per tipo)
7. Tutte le card si aggiornano

Integrazioni App