Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296

    Problema con immagini e cache

    Buongiorno ragazzi,
    ho di nuovo bisogno della vostra esperienza.

    Sto lavorando con PhpGraphlib e genero un grafico come immagine (grafico.png). Successivamente visualizzo a video questa immagine. Fin qui tutto bene, però, se rigenero il grafico con nuovi valori e provo a visualizzare la nuova immagine ottenuta, non so perché, ma viene visualizzata sempre la vecchia immagine.

    E’ da tenere presente che:
    1) La nuova immagine viene generata correttamente, infatti la vedo nella libreria
    2) Non esiste un’altra immagine con lo stesso nome in nessuna libreria
    3) Anche indirizzandola con il path assoluto viene visualizzata sempre la vecchia immagine
    4) Se provo a sostituire l’immagine “grafico.png” con un’altra qualunque immagine, ma con lo stesso nome file, viene sempre visualizzata la vecchia immagine
    5) Se, invece, cancello la cache del browser (IE 8) allora mi aggiorna anche l’immagine.

    Immagino tutto dipenda dal fatto che il browser memorizza nella cache le immagini, ma come posso fare per evitarlo? Non è pensabile di disabilitare i cookies perché bisognerebbe farlo su ogni pc che utilizza il programma.

    In alternativa , immaginando di non potere svuotare la cache da php, come posso agire per eliminare il problema?

    Ho trovato dei thread su questo forum ed ho provato ad applicare i suggerimenti, ma non sembrano funzionare.

    Mi chiedevo se qualcuno di voi ha affrontato e risolto questo problema.

    Grazie

  2. #2
    bè innanzitutto metti le varie intestazioni php per non cachare la pagina che genera il file:
    codice:
    <?
      Header('Cache-Control: no-cache');
      Header('Pragma: no-cache');
    ?>
    Poi, cosa più importante, genera ogni volta un nome random al file e scrivilo nel path href del link alla tua immagine, così sarai sicuro che il link punterà sempre al nuovo file appena generato.

  3. #3
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Originariamente inviato da chrismo
    bè innanzitutto metti le varie intestazioni php per non cachare la pagina che genera il file:
    codice:
    <?
      Header('Cache-Control: no-cache');
      Header('Pragma: no-cache');
    ?>
    Poi, cosa più importante, genera ogni volta un nome random al file e scrivilo nel path href del link alla tua immagine, così sarai sicuro che il link punterà sempre al nuovo file appena generato.
    Intanto grazie per la celerità chrismo.
    Poi devo dire che avevo già provato ad inserire l'header per evitare il caching, ma non sortisce alcun effetto. Ho riprovato ora per sicurezza.
    Poi il secondo suggerimento che mi dai, mi sembra sia indipendente dal primo perchè se io modifico ogni volta il nome del file posso anche lasciare stare la cache. Ad ogni modo, se cambio il nome del file dovrò prevedere di eliminare i "vecchi nomi" altrimenti, prima o poi, potrei ritrovarmi con un numero di file enorme.

  4. #4
    Se vuoi percorrere la via della modifica del nome del file, puoi utilizzare la tecnica che generalmente si usa per "versionare" file CSS e Javascript. In sostanza il nome del file non cambia, ma gli aggiungi una query string in modo che il browser lo consideri come una risorsa nuova e la richieda direttamente senza usare la cache.

    In sostanza invece di
    codice:
    img.jpg
    linki
    codice:
    img.jpg?t=341341
    Alternativamente puoi configurare il webserver in modo che per alcuni file non restituisca ma l'header "not modified", pero' in quel caso la cache non viene utilizzata mai, mentre la soluzione "query string versioning" controlli tu quando annullare la cache.

  5. #5
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Mi stai dicendo che:
    io creo l'immagine (diciamo immagine.png) e poi la utilizzo aggiungendo una query string.
    La query string verrebbe utilizzata quando utilizzo l'immagine e non quando la creo.
    Cioè :

    Codice PHP:
    $valoreCasuale rand(0,10000);

    echo 
    "<tr>
    <td  colspan=13 align=center>[img]Grafico.php?altezza=300&larghezza=1000[/img]
    [img]immagine.png?valore=
    $valorecasuale[/img]
    </td>
    </tr>"

    Non so se ho capito bene. (Ma mi sa di no!)

  6. #6

  7. #7
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Ho seguito il tuo suggerimento, ma in quel modo non riesce a caricare nulla, sembra non riconoscere l’immagine, allora ho fatto un po’ di prove.
    Ho provato, tanto per verificare che potesse funzionare, a generare un file random ogni volta facendo così:
    Codice PHP:
    $valorecasuale rand(0,10000);
    $nomegrafico "grafico".$valorecasuale.".png"
    echo 
    "nomegrafico:$nomegrafico
    "
    ;
    echo 
    "<tr><td >";
    echo 
    "[img]Grafico.php?nome=$nomegrafico[/img]<img src=\"$nomegrafico\">
    </td></tr>"

    il risultato è che, anche in questo caso non visualizza nulla.
    Ora dato che il parsing HTML è questo:

    Codice PHP:
    nomegrafico:grafico1923.png
    <tr><td  colspan=13 align=center>
    [
    img]Grafico.php?nome=grafico1923.png [/img]
    [
    img]grafico1923.png[/img]</td></tr
    e che mi sembra a posto, francamente non so cosa pensare...

  8. #8
    Non pensi che quel "display: none" possa avere a che fare col fatto che non si veda?

  9. #9
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    Originariamente inviato da k.b
    Non pensi che quel "display: none" possa avere a che fare col fatto che non si veda?
    Certo, infatti l'istruzione che deve visualizzare il grafico è quella seguente

    <img src=\"$nomegrafico\">

  10. #10
    Utente di HTML.it L'avatar di otello
    Registrato dal
    May 2003
    Messaggi
    296
    La butto là...
    Potrebbe essere un problema di sincronizzazione? chiedo di visualizzare il grafico e questo non è ancora stato creato?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.