Сначала найдите слой кеширования
Ответ может храниться в браузере, CDN или обратном прокси. Откройте Network и посмотрите на заголовки ответа. Cache-Control описывает правила хранения, а валидаторы вроде ETag помогают проверить, изменился ли ресурс.
no-cache не означает полный запрет хранения: ответ нужно проверить перед повторным использованием. no-store запрещает хранить ответ. Это разные требования, и выбирать их следует по содержимому.
Долгий кеш — для нового имени файла
Для CSS и JavaScript удобно включать хеш содержимого в имя. При изменении файла меняется и URL. Тогда старый ресурс можно долго хранить, а новый HTML ссылается уже на новую версию.
# HTML: хранить можно, перед использованием проверить
Cache-Control: no-cache
# styles.a8b31d.css: URL меняется вместе с содержимым
Cache-Control: public, max-age=31536000, immutableПубликация тоже часть решения
Сначала загрузите новые ресурсы, затем опубликуйте HTML, который на них ссылается. Если удалить старые файлы немедленно, уже открытая вкладка может позже запросить отсутствующий ресурс. Храните предыдущую версию хотя бы на переходный период.
При диагностике сравните ответ напрямую с сервера и через CDN. Проверьте, какой именно HTML получил браузер и на какие имена файлов он ссылается. Принудительное обновление полезно для проверки, но не заменяет корректные правила кеша для посетителей.
Попробуйте сами
В своём проекте измените CSS, соберите новую версию и проверьте, поменялось ли имя файла. Сравните заголовки HTML и этого ресурса.
Можно ли долго кешировать личные данные?
Политика зависит от чувствительности ответа и архитектуры. Не разрешайте общий кеш для персонального содержимого без явного понимания, как исключено смешивание данных пользователей.
Документация и следующий шаг
Продолжите практику: HTML, в котором понятен смысл.