Il mio file CSS è acutally un file PHP che viene servito con il tipo di contenuto text/css
in modo che io possa utilizzare le variabili PHP in quel file. style.php
assomiglia a questo:intestazioni cache per css dinamico (generato tramite PHP)
<?php
header('Content-Type: text/css');
$bgColor = '#000';
?>
body { background:<?php print $bgColor; ?>; }
Esso funziona come previsto, ma io sono un po 'preoccupato se il browser memorizza nella cache il file css creato in modo dinamico.
Osservando le richieste in firebug, mi sembra che il browser stia caricando di nuovo style.php
ogni volta che ricarico la pagina.
ho già provato ad aggiungere queste intestazioni di cache:
header('Cache-control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 60 * 60 * 24) . ' GMT');
ma senza fortuna. Il file è ancora caricato ogni volta che viene caricata la pagina. Quali sono le intestazioni appropriate per forzare il browser a mettere in cache il file per un certo periodo di tempo?
Secondo l'/ 1.1 spec HTTP, non è quello che deve-validate dovrebbe significare - si suppone solo a calciare in dopo che il contenuto memorizzato nella cache è diventato stantio (come indicato dal Scade intestazione, o un valore max-age all'interno di Cache-Control), ma alcuni browser sembrano ignorare le specifiche e inviare comunque la richiesta. "pubblico" non è realmente applicabile, tuttavia, a meno che la connessione non sia autenticata. Vorrei usare "Cache-Control: max-age = 86400" per rinforzare il tempo nell'intestazione Expires. –
@Brock Batsell: grazie per il commento! Questo lo ha chiarito e ora funziona con max-age = XXXX – Max
Se il contenuto del file viene modificato, il file richiesto non verrà aggiornato. L'OP richiede che il file non venga memorizzato nella cache se il contenuto viene modificato. Se il contenuto del file non è cambiato, dovrebbe essere memorizzato nella cache. Il codice fornito attiva la funzione "memorizzazione nella cache". Non risolve il problema dell'OP. –