[PHP] Aggiornare gli elementi di una pagina HTML
pubblicato in PHP, Webmaster il feb.22, 2010
Un sito web dinamico dovrebbe offrire contenuti sempre aggiornati, con soluzioni HTML/CSS crossbrowser (cioè compatibili con la maggior parte dei programmi di navigazione). I webmaster attenti seguono costantemente il proprio sito per adattarlo alle esigenze della Rete.

Un problema frequente è quello di gestire il caching delle pagine HTML. Quando si richiede una pagina internet, il server Web elabora lo script PHP e restituisce la pagina in formato HTML: alcuni browser potrebbero visualizzare una versione “vecchia” della pagina, non aggiornata alle immagini e/o testi più recenti.
Per evitare questo problema, gli sviluppatori agiscono sulle intestazioni PHP attraverso la funzione header(), che permette di aggiornare gli elementi di una pagina HTML con i comandi Cache-Control ed Expires.
header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 22 Feb 2010 10:00:00 GMT");
Le due istruzioni precedenti servono rispettivamente per gestire il caching (la prima) e stabilire la data di scadenza della copia cache della pagina (la seconda).
In particolare, nell’esempio proposto, il valore must-revalidate assegnato a Cache-control impone al browser di ricaricare la pagina dal server, senza prelevarla dalla sua cache.
Mentre il comando Expires specifica che la pagina corrente “scade” il 22 Febbraio 2010. Queste righe di codice devono essere inserite nel punto più alto del codice PHP.
Header HTTP
La funzione header() di PHP permette, in pratica, di modificare gli header HTTP e controllare il meccanismo di caching di una pagina HTML.
Per esempio, se vogliamo mantenere una pagina web nella cache del browser per 5 minuti, scriveremo:
header("Pragma: cache"); header("Cache-Control: max-age=300, must-revalidate");
Cache-Control
Dalla documentazione ufficiale di HTTP/1.1, possiamo assegnare alla direttiva Cache-control i seguenti valori:
| public | Indicates that the response MAY be cached by any cache, even if it would normally be non-cacheable or cacheable only within a non-shared cache. |
|---|---|
| private | Indicates that all or part of the response message is intended for a single user and MUST NOT be cached by a shared cache. This allows an origin server to state that the specified parts of the response are intended for only one user and are not a valid response for requests by other users. A private (non-shared) cache MAY cache the response. |
| no-cache | If the no-cache directive does not specify a field-name, then a cache MUST NOT use the response to satisfy a subsequent request without successful revalidation with the origin server. This allows an origin server to prevent caching even by caches that have been configured to return stale responses to client requests. |
| must-revalidate | When the must-revalidate directive is present in a response received by a cache, that cache MUST NOT use the entry after it becomes stale to respond to a subsequent request without first revalidating it with the origin server. |
| max-age= | The expiration time of an entity MAY be specified by the origin server using the Expires header. Alternatively, it MAY be specified using the max-age directive in a response. If a response includes both an Expires header and a max-age directive, the max-age directive overrides the Expires header, even if the Expires header is more restrictive. |
Conclusioni
In questo articolo abbiamo visto come aggiornare gli elementi di una pagina HTML con PHP, modificando i parametri di caching dei contenuti sul browser.
Ulteriori approfondimenti li seguiremo nelle prossime pubblicazioni.
Tags: cache, caching, http headers







Loading ...
Inserisci il tuo commento