Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2021
    Messaggi
    32

    Aggiornare la pagina quando i contenuti cambiano o quando il programmatore decide di volerli cambiare

    A volte quando aggiorno una pagina statica di php il browser non rileva le modifiche, specie quando aggiorno un'immagine senza cambiarne il nome ovvero non eseguo modifiche al file html.
    In passato su internet avevo trovato il codice seguente che non funziona alla perfezione ma un pochetto migliora la situazione.
    Codice PHP:
    <?php
    header 
    "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
    header "Cache-Control: no-cache" );
    header "Pragma: no-cache" );
    ?>
    Con le ultime versioni di php questo problema è stato risolto. Sarebbe bello che almeno 1 volta al giorno il browser ricaricasse i contenuti ed in fase di sviluppo ad ogni refresh.
    Questo problema è secolare, sono tanti anni che uso PHP per comporre pagine statiche e non ho mai trovato una soluzione valida a questo aspetto.

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Guarda, io l'unica soluzione che ho trovato è passargli una querystring diversa:
    es:
    Codice PHP:
    <link href="css/theme/bootstrap/bootstrap.min.css?t=<?php echo date('Ymd'?>" rel="stylesheet">
    Invece che date() potresti definirti una costante che ogni volta modifichi quando aggiorni i file statici

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2021
    Messaggi
    32
    Ma devo applicare questa tecnica per tutti i link? Diventa complicato e scomodo.

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,802
    ci sono due aspetti da considerare: cache del file php (o altro linguaggio dinamico che sia), e cache dei contenuti.
    in php il "no cache" si imposta con queste intestazioni:
    codice:
    // la prima riga in realtà dovrebbe solo aiutare i motori di ricerca, quindi dal punto di vista della cache non so se funzioni realmente.
    header("Expires: on, 01 Jan 1970 00:00:00 GMT");
    
    // anche la seconda non vedo come possa aiutare: è solo un'informazione sull'ultima modifica.
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    
    // questa tre sono quella che hanno un senso.
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    diverso discorso è per i contenuti: immagini, css, script...
    se non diversamente specificato dall'utente (o dal programmatore) non c'è motivo di ricaricare elementi statici, è solo traffico in più senza un guadagno dal punto di vista della performance e dell'utente.

    quindi: NON si cambia foto senza cambiarne il nome (lo stesso per css e script)
    tuttavia non vogliamo cambiare il nome al css (o ad altro) ogni volta che facciamo un aggiornamento, giusto?
    qui ci soccorre la querystring (come ti hanno già suggerito).
    il metodo più semplice è inserire uno script che legga la data dell'ultima modifica del file che vuoi chiamare (anno-mese-giorno-ora-minuti-secondi), e accodare la querystring con questo valore al nome del file, es:
    codice:
    <link href="css/theme/bootstrap/bootstrap.min.css?t=<?php echo varLastMod ?>" rel="stylesheet">
    spero di averti aiutato

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2021
    Messaggi
    32
    perfetto grazie mille, problema risolto

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.