Проблемы, когда помогает только очистка кеша браузера
Кеш для меня тёмная тема, плохо понимаю, как это всё работает. На практике получается, что вношу какие-то изменения в сайт, и вроде всё ок. И могу много месяцев, а то и лет подряд вносить изменения, и они отображаются. Но в какой-то момент я внесу маленькое изменение примерно такого же характера (стили там какие-нибудь подправлю) и всё везде обновлю и перезапущу, но версию вижу старую. И помогает только почистить кеш браузера.
Интересно, как браузер "выбирает", в какой момент "застрять на старой версии"? Это рандом, есть закономерность или к этому приводят какие-то мои неправильные действия? Если мне пришлось чистить кеш, значит ли это, что мои пользователи тоже будут видеть старую версию, пока не почистят его? И может ли быть такое, что у меня всё ок, а пользователям надо чистить кеш?
Ответы (1 шт):
Заголовок Cache-Control это основной заголовок отвечающий за кеширование. Ключем для кеша в основном является url ресурса.
Кешировать могут не только браузеры, но и проксирующие серверы или сервисы.
Если не делать специальных настроек сброса кеша в браузере, то это будет работать у всех пользователей одинаково.
Чтобы версифицировать js и css обеспечьте добавление к Url ресурса дополнительного параметра (например /style.css?ver=1) и при изменении версии меняйте в html коде номер версии.
Либо настройте свой web сервер чтобы при запросе ресурса отдавался заголовок ответа Cache-Control: no-cache
Оба подхода гарантируют, что пользователи получат именно то, что нужно. Но второй подход ухудшит производительность за счет того, что ваш ресурс никогда не будет кешироваться и вашему вебсерверу придется всегда заново отдавать клиентам этот ресурс, а браузеру всегда придется его запрашивать.