Інший подібний підхід полягає у використанні htaccess mod_rewrite для ігнорування частини шляху при обслуговуванні файлів. Ваша ніколи не кешована сторінка індексу посилається на останній шлях до файлів.
З точки зору розвитку, це так просто, як використовувати парами для номера версії, але це так само надійно, як і підхід до назви файлів.
Використовуйте ігноровану частину шляху для номера версії, а сервер просто ігнорує його і подає файл без кешування.
1.2.3/css/styles.css
обслуговує той самий файл, що і css/styles.css
після того, як перша директорія знімається та ігнорується файлом htaccess
У тому числі файли з версією
<?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>
Зауважте, що такий підхід означає, що вам потрібно відключити кешування вашої індексної сторінки - Використовуючи теги <meta>, щоб вимкнути кешування у всіх браузерах?
.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]
Ви можете скористатися таким же підходом на будь-якій серверній платформі, що дозволяє переписувати URL-адреси
(переписати умову, адаптовану з mod_rewrite - переписати каталог до рядка запиту, за винятком / #! / )
... і якщо вам потрібно перебрати кеш-пам'ять для вашої індексної сторінки / точки входу на сайт, ви завжди можете використовувати JavaSript для оновлення.