При изменении CSS файла страца в браузере не изменяется. Локальный сервер — Apache. С чем может быть связанно, и как можно пофиксить?
Я применяю любые изменения в css файле который через link подключен к html, обновляю страницу и css остаётся тем что был до изменений. Отошел на 2-3 часа и вроде стили применились, думал вроде само исправилось, но чудес не бывает. После еще одного изменения в css проблема таже самая. До этого(2 месяцы работы с apache), ничего подобного не было.
Я погуглил, было много решений, в общем основное это что apache кеширует страницу, я пытался выключить, но так и не нашел толкового решения. Скорее всего плохо искал, спорить не буду. Но все же долблюсь уже 2 час с этим никакого продвижения.
Во-первых: надо настраивать нормально серверные заголовки кэша для клиента: Cache-Control.
Ну и помнить что no-cache не значит "без кэша", а значит "как браузеру взбредёт", а без кэша это no-store.:)
Но вообще думаю вы не хотите отключать кэш, а только заставлять грузить новые файлы если они обновились. В таком случае применяется техника указанная ksnk - особый параметр(обычно туда на стороне сервера автоматически пишется дата изменения), либо используются сборщики, которые автоматически добавляют в имя файла его хэш.
Проблема в браузере пользуюсь edge, решение - нажмите на клавиатуре клавишу F12. Зайдите во вкладку Сеть и найдите Панель разработчика Microsoft Edge. Выберете Отключение кэширования Microsoft Edge.
Ctrl-F5 быстро 2 раза. Для отладки посмотреть что получилось - самое оно. Однако уговаривать всех клиентов отключать кэширование, наверное, неправильно ;)
если нужно быстро показать заказчику - проще поставить другой адрес в link
"...css?1" - в реальности будет грузится измененный файл, но мимо загруженных кэшей. При другом изменении - можно добавить ?2...
в реальности будет грузится измененный файл, но мимо загруженных кэшей
В приведенном Вами примере - не всегда будет грузиться измененный файл, иногда url параметры могут игнорироваться.
Solid1Goose для гарантированной загрузки нового файла, необходимо изменить его url, например main.v1.css, вместо main.css?v=1. Сборщики для фронта по умолчанию подключают статику в таком виде: main.e92g8s1z.css, где e92g8s1z - это хэш контента подключаемого файла.
Вообще да, проблема в кешировании. Для её решения был придуман e-tag https://developer.mozilla.org/ru/docs/Web/HTTP/Hea.... В вашем случае можно обойтись изменением link, но как только статики в проекте станет больше e-tag вам в помощь.
Чтоб узнать что e-tag изменился - браузер должен сделать запрос, если браузер делает запрос то особо смысла нет во всём этом кэшировании уже, т.к. накладные расходы на установку соединения для запроса в большинстве случаев в современном мире больше чем будет потрачено на загрузку самих данных.
Так что наиболее выгодная стратегия, ИМХО - условно-перманентный кэш, который никуда не лезет за перепроверкой и принудительная загрузка нового из-за изменения ссылки.
Aetae, вы правы, но особенность в том, что если етаг не изменился, сервер вернёт статус 304 Not Modified без данных ЕМНИП. И статика все равно загрузится из кеша.
Антон Иванов, это так, но как я и сказал - поифг грузит он данные или только статус 304 - дольше само соединение устанавливается: задержки на dns, на tcp, на tls хэндшейки... :)