Игорь, привет! Ну, дела с кешированием — это прям классика жанра. Особенно когда на боевом сервере все пляшет, а локально — тишь да гладь. Знакомая история, ага. :)

Смотри, тут логика такая: помимо заголовков, которые ты правильно упомянул, часто бывает, что сам веб-сервер (Apache, Nginx) имеет свои настройки кеширования. Или, например, CDN, если он у тебя есть, может подкидывать свои сюрпризы. Проверял настройки самого сервера?

Частая ошибка — думать, что ты контролируешь всё одним лишь PHP. Но нет, frontend и серверная часть тут тесно сплетены. Имхо, нужно копнуть глубже. Попробуй вот что:

  • Проверь конфигурацию Nginx/Apache. Иногда там прописаны правила кеширования на файлы статичных ресурсов (JS, CSS, картинки), которые перебивают твои PHP-заголовки.
  • Используй Developer Tools в браузере. Открой вкладку Network, зайди на свой сайт и там посмотри, какие именно заголовки возвращаются для CSS, JS файлов. Особенно интересует `Cache-Control`, `Expires`, `ETag`.
  • Попробуй добавить случайный параметр к всем ссылкам на JS/CSS. Типа `style.css?v=12345`. При каждом изменении меняешь число. Это чисто для теста, чтобы форсированно браузер заставил скачать новый файл. Если поможет, значит, проблема где-то глубже в настройках кеша

А вообще, создание сайтов — это вечное приключение с разными такими нюансами. )) Удачи в поисках!