В зависимости от того, какой у вас внешний интерфейс, у вас может не быть доступа или интереса к изменению заголовков.
Одним из очень простых решений является переименование ресурсов при их изменении. Очевидно, что переход от «image.jpg» к «image2.jpg» каждый раз, когда он изменяется, будет неудобно поддерживать, вдвойне в зависимости от вашего контроля исходного кода, но переход от «image.jpg? V = 1» к «image.jpg ? v = 2 "позволит вам сохранить одинаковые имена файлов, заставляя браузеры и посредников кэширования перезагружать ресурс.
Обычной практикой является использование хэша файла в качестве параметра, поэтому вам не нужно не забывать увеличивать его при каждом изменении файла.
Что касается вашего HTML-файла, самое простое решение - не кэшировать его вообще. Я предполагаю, что для вас не будет большой проблемой восстанавливать его каждый раз, когда он просматривается, поэтому добавление заголовков не должно быть проблемой.
Добавить заголовок Cache-Control и заголовок Expires. Вместе они должны помешать всем браузерам и посредникам кэшировать html-файл, вызывая перезагрузку каждый раз:
<?php
header("Cache-Control: no-cache,no-store,must-revalidate");
header("Expires: 0");
?>
Просто убедитесь, что ваши вызовы header () перед выводом каких-либо данных страницы, так как заголовок HTTP должен быть отправлен перед отправкой любой из страниц.