Innym podobnym podejściem jest użycie htaccess mod_rewrite w celu zignorowania części ścieżki podczas udostępniania plików. Twoja nigdy nie buforowana strona indeksu odwołuje się do najnowszej ścieżki do plików.
Z punktu widzenia programowania jest to tak proste, jak użycie parametrów dla numeru wersji, ale jest tak solidne, jak podejście do nazwy pliku.
Użyj zignorowanej części ścieżki dla numeru wersji, a serwer po prostu go zignoruje i wyświetli plik niebuforowany.
1.2.3/css/styles.css
obsługuje ten sam plik, css/styles.css
ponieważ pierwszy katalog jest usuwany i ignorowany przez plik htaccess
W tym wersjonowane pliki
<?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>
Zauważ, że to podejście oznacza, że musisz wyłączyć buforowanie swojej strony indeksu - używając tagów <meta>, aby wyłączyć buforowanie we wszystkich przeglądarkach?
Plik .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]
Możesz zastosować to samo podejście na dowolnej platformie serwerowej, która umożliwia przepisywanie adresów URL
(warunek przepisania dostosowany z mod_rewrite - przepisanie katalogu do ciągu zapytania z wyjątkiem / #! / )
... a jeśli potrzebujesz pomijania pamięci podręcznej dla strony indeksu / punktu wejścia witryny, zawsze możesz użyć JavaSript, aby ją odświeżyć.