Otro enfoque similar es usar htaccess mod_rewrite para ignorar parte de la ruta al entregar los archivos. Su página de índice nunca almacenada en caché hace referencia a la ruta más reciente a los archivos.
Desde una perspectiva de desarrollo, es tan fácil como usar parámetros para el número de versión, pero es tan robusto como el enfoque del nombre de archivo.
Use la parte ignorada de la ruta para el número de versión, y el servidor simplemente lo ignorará y entregará el archivo sin caché.
1.2.3/css/styles.css
sirve el mismo archivo que css/styles.css
desde que el primer directorio es eliminado e ignorado por el archivo htaccess
Incluyendo archivos versionados
<?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>
Tenga en cuenta que este enfoque significa que debe deshabilitar el almacenamiento en caché de su página de índice: ¿ usa etiquetas <meta> para desactivar el almacenamiento en caché en todos los navegadores?
archivo .htaccess
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]
Puede adoptar el mismo enfoque en cualquier plataforma de servidor que permita la reescritura de URL
(condición de reescritura adaptada de mod_rewrite - reescribir el directorio en la cadena de consulta excepto / #! / )
... y si necesita eliminar la memoria caché para su página de índice / punto de entrada del sitio, siempre puede usar JavaSript para actualizarlo.