1. Вагрантом пользуешься?
Выключи sendfile в Nginx и Apache
если nginx - в файле
/etc/nginx/nginx.conf
и поменяй опцию
sendfile off
если Apache - в зависимости от операционной системы - найди
httpd.conf
или
apache.conf
и поменяй опцию
EnableSendfile off
2. Заголовки Expiration устанавливаешь?
Это на самом деле хорошая практика, но в разработке мешает
Попробуй сделать так: на продакшене заведи файл VERSION.txt и записывай туда номер версии (например, 1.0) в тот момент, когда обновление выкатываешь.
У себя такой файл не держи.
Когда подключаешь CSS к странице, то проверяй наличие такого файла. Если файла нет, то ставь текущую метку времени.
Пример на PHP
<?php
$versionPath = 'path/to/VERSION.txt';
$version = is_file($versionPath) ? file_get_contents($versionPath) : time();
?>
<link rel="stylesheet" href="/path/to/style.css?v=<?php echo $version ?>">
На продакшене у тебя будет ссылка на CSS с фиксированной версией вида
<link rel="stylesheet" href="/path/to/style.css?v=1.0">
А на твоей машине будет всегда уникальный URL, который будет свежим, даже если заголовок Expiration выставлен.
<link rel="stylesheet" href="/path/to/style.css?v=1494560580">
То же самое - для JS и файлов изображений. Метка версии решает много проблем как у тебя, так и у пользователей твоего сайта после выкатки обновления на сервер.