Я работаю над небольшим веб-приложением и пытаюсь найти лучшее решение, чтобы заставить все браузеры использовать кеш и только аннулировать его при обновлении загружаемого актива.
Согласно исследованию, которое я сделал здесь и в другом месте, все, похоже, согласны с тем, что добавление? v = {version #} в такой актив, как css или js файл, является отличным способом автоматического аннулирования кеша когда актив обновляется. (В соответствии с Заставить браузер очистить кеш и Лучший способ предотвратить кеширование браузером файлов JavaScript)
Но мне кажется, что это решение должно быть обобщено на все активы, которые находятся на веб-сервере.
Итак, мой вопрос: было бы хорошей практикой иметь конструкцию script просматривать каждый атрибут src="" на всем веб-сайте - будь то img, css или js и программно добавлять? = {timestamp } где timestamp - время последнего изменения файла. Таким образом, всякий раз, когда вы нажимаете от разработчика до стадии постановки на производство, только те файлы, которые были изменены, будут иметь измененную метку времени, и браузер будет знать, чтобы аннулировать кеш для этих файлов.
Любые недостатки с этим подходом?
ПРИМЕЧАНИЕ. Размышляя об этом чуть больше, временная метка определенно будет нежелательной в случае изменений, которые позже будут отменены. Поэтому добавление? = {Md5 (filecontents)} является более надежным подходом. Тем не менее, вопрос о том, реализуется ли это по всем активам и всем сборкам, остается.