Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    751

    PHP Header, permetttere che venga creata una cache del file

    Ciaoa tutti,

    ho la necessità che alcuni file, se pur creati dinamicamente dal server PHP, possano essere messi nella cache del client in modo che non vengano ricaricati ogni volta(almeno per 1 ora), cosa dovrei aggiungere al mio header PHP?

    Codice PHP:
     header('Content-Type: application/javascript'); 
    Ho provato ad aggiungere questo ma comunque il file non viene messo in cache dal browser e viene ricaricato:
    Codice PHP:
    $seconds_to_cache 3600;
    $ts gmdate("D, d M Y H:i:s"time() + $seconds_to_cache) . " GMT";
    header("Expires: $ts");
    header("Pragma: cache");
    header("Cache-Control: max-age=$seconds_to_cache"); 
    Grazie,
    Roberto

  2. #2
    io in genere faccio in altro modo:
    codice:
    src="script.js?v=$versione"
    dove quel $versione viene creato in base alle tue regole.
    così il browser lo ricarica solo cambia il $versione.

    o a volte, se non cambia mai, ci metto la data "fissa" e la cambio a mano solo se cambio lo script.

    PS: non ho potuto mettere i tag perchè mi blocca.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    751
    Quote Originariamente inviata da fermat Visualizza il messaggio
    io in genere faccio in altro modo:
    codice:
    src="script.js?v=$versione"
    dove quel $versione viene creato in base alle tue regole.
    così il browser lo ricarica solo cambia il $versione.

    o a volte, se non cambia mai, ci metto la data "fissa" e la cambio a mano solo se cambio lo script.

    PS: non ho potuto mettere i tag perchè mi blocca.
    Io uso un hash 256 per generare il nome del file js tipo questo:

    codice:
    src="http://localhost/js/01924c5736a748e07842780c6409ace4f9ff77d610c54d63f726d717c424ca0c261a8e8c16bf2480f6aaa912881087261a9c22046fa5ca6fb5c0ae27a98341fa.js"
    L'hash è calcolato sull'intero file js, per cui, se non si cambia il file js, l'hash è uguale e di conseguenza non cambia neanche il nome del file, ciononostante, ad ogni ricarica della pagina viene scaricato nuovamente(nonostante il nome rimanga invariato).

  4. #4
    Visto che salvi i file sul filesystem, usa l'.htaccess per abilitare il caching dei file JS:

    https://help.dreamhost.com/hc/en-us/...htaccess-file-

  5. #5
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,741
    Quoto l'uso di .htaccess e aggiungo... per aggiungere una stringa che forzi l'aggiornamento del file potresti pensare di farla costruire in automatico da PHP, per non dover cambiare manualmente numero di versione ad ogni modifica che fai.

    Per esempio, nello script invece di scrivere solo il nome del file potresti richiamare una funzione di PHP, a cui passi il nome (ed eventualmente il percorso) del file come parametro
    codice:
    ... src="' . assetString('miofile.js') .' ..."
    Da qualche parte nel codice avrai una funzione assetString:
    codice:
    function assetString($file)
    {
        return $file . '?' . filemtime($file);
    }
    Che ti restituirà qualcosa tipo "miofile.js?12345214". Dato che filemtime() restituisce la data di ultima modifica del file, ogni volta che lo andrai a modificare quella stringa cambierà, risolvendoti il problema di forzare manualmente la cache.


    p.s. inserire pezzi di codice su questo forum -un forum di programmazione!- è un'agonia. Non so quante volte mi ha bloccato il messaggio

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 © 2021 vBulletin Solutions, Inc. All rights reserved.