Вы можете просто делать что-то типа такого:
<link rel="stylesheet" href="/assets/css/styles.css?modified=<?php echo filemtime(APPPATH . '../assets/css/styles.css'); ?>">
Этот PHP-код проверяет дату последнего изменения файла и подставляет его в query файла. Алгоритм в других языках точно такой же. На выходе получается что-то вроде такого:
<link rel="stylesheet" href="/assets/css/styles.css?modified=1471224794">
Но это считается плохой практикой, т.к.
некоторые кэширующие прокси-серверы не кэшируют статические ресурсы, содержащие query-строки (в нашем случае это
?modified=1471224794
).
Хорошая практика - это отдавать файлы примерно так:
<link rel="stylesheet" href="/assets/css/7c624717f06078161d803fc4ea84fc23.css">
Здесь название файла - это закодированная через MD5 дата последнего изменения. Но автоматизация подобной системы может занять некоторое количество сил и времени. Таким методом пользуются, например, Тостер и GitHub.