Когда мы разрабатываем новые сайты или тестируем изменения в новых, которые включают css, после того, как новый код зафиксирован, и кто-то идет проверить изменения, они всегда видят кешированную версию старого css. Это вызывает много проблем при тестировании, потому что люди никогда не уверены, есть ли у них последняя версия CSS на экране (я знаю, что сдвиг и нажатие кнопки «Обновить» очищает этот кеш, но я не могу ожидать, что конечные пользователи узнают об этом). Каковы мои возможные решения?






В вашей среде разработки установите заголовок Expires намного ниже. В производственной среде установите более высокое значение, а затем - низкое примерно за неделю до выпуска релиза.
Если вы обслуживаете свой CSS из статических файлов (или чего-либо, для чего строка запроса не имеет значения), попробуйте изменить это, чтобы браузер делал новый запрос, так как он будет думать, что он извлекает совершенно другой ресурс, поэтому например:
"styles.css? token = 1234" в ссылке CSS в вашей разметке и изменяйте значение "token" при каждой регистрации CSS.
Хотя это решение будет работать, оно совершенно непрактично для больших веб-сайтов, которые могут содержать сотни ссылок на файлы .css и .js.
@ user357320, я отсылаю вас к строкам 21 и 22 этой самой страницы, которая по некоторым определениям является «большим веб-сайтом». К счастью, это хорошо структурированный и спроектированный веб-сайт, поэтому на нем нет сотен ссылок, с которыми нужно бороться.
@Karlth Любой веб-сайт, особенно большой, должен использовать сборку css и js, а большинство библиотек имеют временную метку / версию / хэш, сгенерированную в url, поэтому не нужно изменять сотни ссылок css.
@ user3285954 «Любой сайт должен» легче сказать, чем реализовать!
@Karlth Если вы используете фреймворк, то обычно просто переключаете флаг, это может быть даже сделано для каждой среды, например никаких пакетов и минификации для разработчиков, но и то, и другое для всех остальных. И не следует создавать большой сайт без использования фреймворков. И на практике даже крошечные веб-сайты могут использовать фреймворки, и часто это делают.
@ user3285954 Мы не используем сторонние фреймворки, только поддерживаем библиотеки. Лично я бы не рекомендовал использовать фреймворки Javascript / CSS. Мнения, конечно, разные!
Это не лучшее решение, но я уже обходил это раньше на уровне страницы, добавляя строку запроса в конец вызова файла CSS:
<link href = "/css/global.css?id=3939" type = "text/css" rel = "stylesheet" />
Затем я бы рандомизировал значение id, чтобы оно всегда загружало другое значение при загрузке страницы. Затем я вынул бы этот код, прежде чем запускать его в производство. Я полагаю, вы также можете извлечь значение из файла конфигурации, чтобы его нужно было загружать только один раз за фиксацию.
Подобные (немного более подробные) ответы даны для версии этого вопроса для JavaScript, которая имеет ту же проблему / решение.
Я уже использую статический метод для добавления css на страницы, поэтому я добавил метку времени сборки в строку запроса, спасибо большое.