Динамическая версия CSS и JS
Периодически приходится немного править каскадные таблицы стилей и скрипты на разных проектах. До сих пор я использовал следующее решение:
<link rel="stylesheet" href="/styles/main.css?<?php echo time(); ?>" />
<script src="/js/main.js?<?php echo time(); ?>"></script>
Где php-вставка подставляла текущее время и получался следующий код:
<link rel="stylesheet" href="/styles/main.css?1401823964" />
<script src="/js/main.js?1401823964"></script>
Это позволяло автоматически обновлять в браузере CSS и JS файлы с которыми работаю (борьба с кешированными версиями обновляемых файлов), создавая «разные» версии файлов, при каждой перезагрузке страницы. Но правильно ли так делать? Ведь даже если я ничего не менял, все равно браузер грузил все по новому.
Возможно, что лучше применять следующий алгоритм работы с кешем файлов такого типа:
- Берётся время последнего изменения файла.
- Сравнивается со временем указанным как версия файла (или с хранимыми где-то последними версиями файлов, которые используются).
- Если они равны, то ничего не меняется.
- Если не равны, то версия файла меняется на время последнего изменения файла (или старый файл заменяется новым).
Стоит ли вообще на этом заостряться? Или лучше воспользоваться одним из решений предложенных в дополнительных материалах или предложенным выше (вторая ссылка вроде предлагает решение по этому алгоритму)?
Дополнительные материалы
Умное Кеширование и Версионность в Javascript/CSS
(en) Automatic merging and versioning of CSS/JS files with PHP
(en) Automatic versioning of CSS, JavaScript and Images
(en) Simple CSS/JS Concatenation and Versioning with PHP
(en) Automating JS and CSS Versioning
(en) Make your pages load faster by combining and compressing javascript and css files
Спасибо за статейку!