Un altro approccio simile consiste nell'usare htaccess mod_rewrite per ignorare parte del percorso quando si servono i file. La tua pagina indice mai memorizzata nella cache fa riferimento al percorso più recente dei file.
Dal punto di vista dello sviluppo è facile come usare i parametri per il numero di versione, ma è robusto quanto l'approccio del nome del file.
Utilizzare la parte ignorata del percorso per il numero di versione e il server lo ignora e serve il file non memorizzato nella cache.
1.2.3/css/styles.css
serve lo stesso file da css/styles.css
quando la prima directory è stata rimossa e ignorata dal file htaccess
Compresi i file con versione
<?php
$version = "1.2.3";
?>
<html>
<head>
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<link rel="stylesheet" type="text/css" href="<?php echo $version ?>/css/styles.css">
</head>
<body>
<script src="<?php echo $version ?>/js/main.js"></script>
</body>
</html>
Tieni presente che questo approccio significa che devi disabilitare la memorizzazione nella cache della tua pagina indice. Utilizzando i tag <meta> per disattivare la memorizzazione nella cache in tutti i browser?
.htaccess file
RewriteEngine On
# if you're requesting a file that exists, do nothing
RewriteCond %{REQUEST_FILENAME} !-f
# likewise if a directory that exists, do nothing
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise, rewrite foo/bar/baz to bar/baz - ignore the first directory
RewriteRule ^[^/]+/(.+)$ $1 [L]
Puoi adottare lo stesso approccio su qualsiasi piattaforma server che consente la riscrittura degli URL
(condizione di riscrittura adattata da mod_rewrite - riscrive la directory alla stringa di query tranne / #! / )
... e se hai bisogno del busting della cache per la tua pagina di indice / punto di ingresso del sito, puoi sempre utilizzare JavaSript per aggiornarlo.