2

settembre

Forzare l’aggiornamento della cache in automatico

Pubblicato in Programmazione

Durante la personalizzazione di un widget ho dovuto affrontare un problema davvero noioso.  Modificando il CSS, questo non veniva memorizzato nella cache del browser ma veniva come incorporato nell’API .

Il risultato? Il widget, anche cancellando o disattivando la cache del browser, veniva visualizzato sempre con  la vecchia versione del CSS, nascondendo le modifiche che di volta in volta effettuavo.

Il problema è molto noto, può presentarsi anche caricando immagini con script, oppure lavorando con  filmati flash, con ajax, con Javascript ecc…

Sono stato costretto a correre ai ripari, e ho cominciato a cercare qualche soluzione.

La prima soluzione a cui ho pensato è stata cambiare ogni volta nome al foglio di stile. Il Problema veniva così risolto ma ogni volta dovevo rinominare il css via ftp e modificare  il link che lo richiamava nella pagina.

Visto che il procedimento era molto lento sono stato costretto a cercare un alternativa. Grazie a Google ho scoperto che Stephen Hayden ha proposto un trucchetto per ovviare il problema. Il trucco consiste  nell’aggiungere una variabile GET alla fine del richiamo del file CSS, proprio  come accade per le pagine dinamiche;

Il codice sarebbe tipo questo:

 <link rel="stylesheet" href="http://yeswebcan.it/style.css?version=1" 
type="text/css" />

In questo modo non è più necessario rinominare il CSS, basta cambiare il valore alla variabile version ad ogni modifica. Procedura più veloce della precedente ma pur sempre macchinosa.

Allora ho pensato di aggiungerci un piccolo accorgimento. Niente di più semplice, mi sono limitato a generare in modo casuale (random) il valore della variabile GET tramite PHP. In questo modo sono riuscito a dare automaticamente un valore diverso alla variabile, costringendo il browser a richiedere ogni volta il file CSS al server.

Ecco il codice di esempio:

http://www.sito.it/style.css?version=<?php $code=rand(5,130); echo"$code";?>

Viene generato un numero random compreso tra 5 e 130 (ho scelto tali numeri senza alcun criterio, potete utilizzare una qualsiasi coppia di numeri interi)

L’esempio per un immagine sarebbe:

<img src=”img.jpg?visual=<?php $code=rand(5,130); echo$code;?>alt=”prova”/>
Iscriviti ai feed Rss

Ti è piaciuto questo articolo?

SI

Iscriviti ai Feed RSS, magari ti piaceranno anche i prossimi

NO

Iscriviti ai Feed RSS, prima o poi ne scriverò uno che ti piace

Scrivi per yesWEBcan

Diventa un autore

Vuoi dare risalto alla tua professionalità e farti conoscere sul web? Segnalami quali argomenti ti piacerebbe trattare e inizia a scrivere per yesWEBcan.

Salvatore Sodano

Autore: Salvatore Sodano

Salvatore inizia a svolgere l’attività di web designer nel 2001 alla quale poco dopo affianca quella di graphic designer. Negli ultimi anni la passione per Seo e web marketing prende il sopravvento e lo spinge a curare oltre all’estetica dei siti anche ottimizzazione, posizionamento per i motori di ricerca e usabilità. Contatta Salvatore

RSS Commenti

3 commenti

  1. [...] IMPORTANTE: Una volta pubblicato, il css rimane in memoria, quindi se successivamente vorrete effettuare altre modifiche queste non vi saranno visibili neanche cancellando o disattivando la cache del browser. Il problema è facilmente risolvibile e ne parlo in quest’articolo [...]

  2. Nino scrive:

    Ottima idea, mi sono trovato con lo stesso problema mentre sviluppavo un portale in Joomla e ho utilizzato una soluzione simile. A voler essere pedanti infatti, dopo molte prove il numero casual potrebbe essere già stato generato e portare ad un caricamento dalla cache. Così ho usato come varibile GET la data e ora correnti.

    • yesWEBcan scrive:

      Esatto Nino
      ma il metodo della data e ora correnti utilizzati da te è sicuramente migliore, a me la prima cosa che è venuta in mente è stata il numero casuale e ho usato quello, ma oggi anche io utilizzerei data e ora correnti.
      Benvenuto

Lascia un commento

* Campi obbligatori