π§Ή Cache Manager - Implementazione Completa
π§Ή Cache Manager - Implementazione Completa
Data: 21 Ottobre 2025 Modulo: Systems > Configurazione Tipo: Gestione Cache Sistema
---
π Riepilogo
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.phpMetodi:
index()- Mostra pagina con info cacheclear(Request $request)- Pulisce cache (POST)clearAll()- Pulisce tutta la cacheclearView()- View cacheclearConfig()- Config cacheclearRoute()- Route cacheclearApp()- Application cacheclearOpcache()- OPcache PHPclearCompiled()- Compiled classesgetViewCacheInfo()- Info view cache (size, count)getConfigCacheInfo()- Info config cachegetRouteCacheInfo()- Info route cachegetAppCacheInfo()- Info app cachegetOpcacheInfo()- Info OPcache (hit rate, memory)getCompiledInfo()- Info compiledformatBytes($bytes)- Helper formattazione dimensioni- View: Primary (Blu)
- Config: Warning (Giallo)
- Route: Info (Cyan)
- App: Success (Verde)
- OPcache: Danger (Rosso)
- Compiled: Warning (Giallo)
- β Bottoni disabilitati se cache non esiste
- β Conferma JavaScript prima di submit
- β Bottone "Pulisci Tutto" rosso e grande
- β Descrizioni sotto ogni bottone
- GET:
- POST:
- Label: Gestione Cache
- Route:
- Icon:
- Sort: 10
- Parent: ID di "Configurazione"
- Gradienti pastello
- Icone Bootstrap Icons (
- Hover pulse-glow
- NO translateY
- Ombre morbide
- Header con gradiente
- Hover effect su ombra
- Colori semantici (primary, warning, info, success, danger)
- Icone contestuali
- Conferma JS prima di azioni critiche
- Disabled se cache non presente
- Numero file compilati
- Dimensione totale
- Stato: Presente/Assente
- File presente/assente
- Dimensione file
- File presente/assente
- Dimensione file
- Numero entry cache
- Dimensione totale
- Abilitato/Disabilitato
- Hit Rate %
- Script in cache
- Memoria usata/totale
- Packages presente/assente
- Services presente/assente
- Login come super-admin
- Naviga al menu item
- Verifica che la pagina si carichi
- Verifica che mostri dati reali
- Controlla dimensioni file
- Verifica OPcache (se abilitato)
- Clicca "Pulisci View Cache"
- Conferma popup
- Verifica toast success
- Ricarica pagina
- Controlla che la card si aggiorni
- Clicca "PULISCI TUTTA LA CACHE"
- Conferma popup
- Verifica 6 alert success
- Controlla che tutto funzioni ancora
- Lettura info cache: ~50ms (scan directory)
- Pulizia singola: ~100ms
- Pulizia totale: ~500ms
- OPcache reset: ~10ms (ma rallenta richieste successive)
- [ ] 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
Totale: ~300 righe
---
2. Vista β
File:resources/views/admin/systems/configuration/cache.blade.phpSezioni:
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:
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:
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.phpAggiunte:
`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:
/admin/systems/configuration/cache
/admin/systems/configuration/cache/clearRoute 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) β NuovoCampi:
admin.systems.configuration.cache.index
bi-speedometer2
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:
fs-5)
Action Cards
Bottoni
---
π 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
Config Cache
Route Cache
Application Cache
OPcache
Compiled Classes
---
π― 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
Test 2: Info Cards
Test 3: Pulizia Singola
Test 4: Pulizia Totale
---
ποΈ 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') }}
`---
ποΈ Menu Database
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
---
β Checklist Post-Implementazione
---
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