Uno dei tanti aspetti importanti da tenere in considerazione quando si sviluppa un applicazione WEB è quello relativo alla gestione cache. In generale possiamo dire, senza entrare troppo nel dettaglio che sia i Browser sia eventuali Proxy memorizzano localmente il contenuto delle pagine WEB visitate, il motivo è quello di ottimizzare il caricamento delle pagine leggendo una copia delle stesse precedentemente visitata invece di dover rieffettuare la richiesta al server, in alcuni casi, questo fattore potrebbe essere un vantaggio, ma al contrario molto più di frequente un vero e proprio "problema", eventuali modifiche verrebbero ignorate perché come detto in precedenza, il browser leggerebbe i file locali ignorando eventuali modifiche. Esistono diverse tecniche per ovviare a questo problema ma non tutte si mostrano sempre efficaci. In JAMP è applicato una tecnica composta con lo scopo di forzare comunque l'aggiornamento della cache:
1) Modifica header della pagina come mostrato:
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
2) Aggiunta di una costante al url degli oggetti linkati alla pagina:
<link rel="stylesheet" type="text/css" href="/engine2/template/objcss/page/page.css?1233970759">
<link rel="stylesheet" type="text/css" href="/engine2/template/objcss/dsnav/dsnav.css?1233970759">
<link rel="stylesheet" type="text/css" href="/engine2/template/objcss/tabs/tabs.css?1233970759">
<link rel="stylesheet" type="text/css" href="/engine2/template/objcss/calendar/calendar.css?1233970759">
<script type="text/javascript" language="JavaScript1.5" src="/engine2/js/tabs.js?1233970759"></script>
<script type="text/javascript" language="JavaScript1.5" src="/engine2/js/text.js?1233970759"></script>
<script type="text/javascript" language="JavaScript1.5" src="/engine2/js/calendar.js?1233970759"></script>
<script type="text/javascript" language="JavaScript1.5" src="/engine2/js/dsselect.js?1233970759"></script>';
Esistono tre possibili politiche:
- Non gestire la cache, ossia affidare alle impostazioni del Browser o del Proxy la sua gestione.
- Forzare il download delle pagine web ad ogni richiesta aggiungendo il timestamp nell'url dei file linkati, in questo modo si farà credere al Browser o al Proxy che si tratti di volta in volta di file diversi
- Utilizzare una costante, ossia aggiungendo una stringa sempre uguale ai file linkati alla pagina web. Ogni qualvolta si effettueranno delle modifiche si cambiarà il valore della costante. Tale metodo a nostro avviso è il più conveniente perché unisce i vantaggi della prima e della seconda tecnica, garantendo che non vengano ricaricate dalla cache vecchie versioni dei files linkati alla nostra pagina web ed allo stesso tempo non si forza sempre e comunque il download degli stessi ma solo se necessario, tale aspetto è di non poco conto se si considera che l'utilizzo della cache può migliorare considerevolmente le prestazioni di una qualunque applicazione web e quindi un suo uso consapevole è sicuramente la scelta migliore.
La gestione della cache si effettua tramite costanti, per maggiori informazioni vedi l'argomento relativo alle costanti