Это в основном неправильно. Есть различия между браузерами в отношении кеширования. И как только файл кэшируется на клиенте, он не будет загружаться снова, пока не истечет срок действия кэша (по какой-либо причине), изменение файла на сервере не будет иметь значения ...

ый вопрос касательно CSS и браузера. Я попытался найти SO и нашел несколько похожих постов, но ничего определенного.

Я использую один или два файла CSS в своих веб-проектах. На них есть ссылки в заголовке моих веб-страниц. Когда я нажимаю на одну из моих страниц, кэшируется ли CSS, чтобы он не перезагружался с каждым запросом? Я надеюсь, что это так. IE, Firefox и Safari обрабатывают это по-разному? Если браузер закрыт, обновляется ли CSS при первом посещении, когда открывается новый экземпляр браузера?

 Már Örlygsson20 янв. 2009 г., 09:47
Могу ли я также предложить несколько дополнительных тегов, таких как: http, caching, brwoser.
 Már Örlygsson20 янв. 2009 г., 09:41
Часть заголовка «размер файла» немного вводит в заблуждение, поскольку реальный вопрос вообще не вращается вокруг размеров файлов. «CSS-файлы и браузерное кэширование» или «Браузерное кэширование CSS-файлов» выглядят гораздо лучше: </ twocents>

Ответы на вопрос(6)

да, он кешируется. Все браузеры должны обрабатывать это одинаково. Некоторые люди (например, я) могут настроить свои браузеры так, чтобы они не кэшировали файлы. Закрытие браузера не делает файл недействительным в кеше. Однако изменение файла на сервере должно привести к обновлению файла.

 Jan Hančič20 янв. 2009 г., 08:52
Это в основном неправильно. Есть различия между браузерами в отношении кеширования. И как только файл кэшируется на клиенте, он не будет загружаться снова, пока не истечет срок действия кэша (по какой-либо причине), изменение файла на сервере не будет иметь значения ...

отправляемых с файлами CSS, как указано в обоих предыдущих ответах - если вы не добавляете кэш-информацию для href. например

<link href="/stylesheets/mycss.css?some_var_to_bust_cache=24312345" rel="stylesheet" type="text/css" />

Некоторые фреймворки (например, rails) вставляют их по умолчанию.

Однако, если вы получите что-то вродеподжигатель или жеобманщиквы можете точно видеть, что ваш браузер загружает при каждом запросе - что особенно полезно для выяснения того, что ваш браузерявляется делать, а не только то, чтодолжен делать

Все браузерыдолжен уважайте заголовки кэша таким же образом, если только они не настроены на их игнорирование (но обязательно должны быть исключения)

какие заголовки вы отправляете вместе с вашими CSS-файлами. Проверьте конфигурацию вашего сервера, поскольку вы, вероятно, не отправляете их вручную. Выполните поиск в Google по запросу «http caching», чтобы узнать о различных параметрах кэширования, которые вы можете установить. Вы можете заставить браузер загружать новую копию файла каждый раз, когда он загружает его, например, или вы можете кэшировать файл в течение одной недели ...

Решение Вопроса

вероятно быть кэшированным - но это зависит ...

Различные браузеры ведут себя по-разному - особенно это заметно при работе с неоднозначными / ограниченными заголовками кэширования, исходящими от сервера. Если вы посылаете четкий сигнал, браузеры подчиняются практически все время.

Наибольшая разница на сегодняшний день заключается в конфигурации кэширования по умолчанию для различных веб-серверов и серверов приложений.

Некоторые (например, Apache) могут обслуживать известные статические типы файлов с заголовками HTTP, поощряя браузер кешировать их, тогда как другие серверы могут отправлятьno-cache Команды с каждым ответом - независимо от типа файла.

...

Итак, во-первых, прочитайте некоторые из превосходныхHTTP кеширование учебники тамHTTP Caching & Cache-Busting для контент-издателей был настоящим откровением для меня :-)

Далее установите и возитесь споджигатель иЖивые HTTP-заголовки дополнение, чтобы узнать, какие заголовки фактически отправляет ваш сервер.

Затем прочитайте документацию своего веб-сервера, чтобы узнать, как настроить их до совершенства (или попросите своего системного администратора сделать это за вас).

...

Что происходит, когда браузер перезапускается, это зависит от браузера и конфигурации пользователя.

Как правило, ожидайте, что браузер с большей вероятностью будет проверять сервер после каждого перезапуска, чтобы увидеть, изменилось ли что-нибудь (см.Если-Last-Modified а такжеIf-None-Match).

Если вы правильно настроите свой сервер, он сможет вернуть супер-короткий304 Не модифицировано (стоит очень мало пропускной способности), и после этого браузер будет использовать кеш как обычно.

 Pacerier18 июл. 2012 г., 21:06
Ctrl-K уже показывает нам «живые http заголовки»? Почему нам нужно использовать надстройку Live HTTP Header?

браузеры кэшируют CSS-файлы (если это не отключено конфигурацией браузера). Многие браузеры имеют комбинацию клавиш для перезагрузки страницы без кеша. Если вы внесли изменения в css и хотите, чтобы пользователи увидели их немедленно, а не ожидали в следующий раз, когда браузер перезагрузит файлы без кэширования, вы можете изменить способ обслуживания CSS, добавив в URL некоторые параметры, например:

/style.css?modified=20012009
 Paulius Zaliaduonis01 мар. 2012 г., 12:48
Genius! /Style.css?deployment={DeploymentId}
 Jesse Webb17 дек. 2012 г., 21:39
@Pacerier - мне кажется, довольно стандартный параметр HTTP GET. Что заставляет вас думать, что это не будет поддерживаться? Ничего особенного здесь не происходит ...
 plowman19 июл. 2012 г., 23:28
@Pacerier Да, это «поддерживаемый» способ делать вещи. Так как браузер просто видит/style.css?modified=20012009 как URL, это эквивалентно изменению имени вашего CSS-файла каждый раз, когда вы делаете релиз. Поскольку браузер считает, что файл новый, он не будет пытаться использовать его кэшированную версию.
 Pacerier18 июл. 2012 г., 21:35
Это поведение поддерживается RFC?
 Pacerier20 июл. 2012 г., 00:02
@ Пахарь, я имею в виду, да, это работает вдикий, но поддерживается ли такое поведение официальными предписывающими стандартами RFC?

стоит отметить, что IE не будет кэшировать файлы CSS, вызываемые другими файлами CSS, используя метод @import. Так, например, если ваша html-страница ссылается на «master.css», который извлекает «reset.css» через @import, то reset.css не будет кэшироваться IE.

 Henrik Stenbæk29 нояб. 2011 г., 15:36
Это не похоже на правду, ср .:ссылка см. этот комментарий / ответ: Мюррей | 27 мая 2009 г. в 9:52 Стив, я также слышал, что при использовании @ import браузеры могут не кэшировать файлы css, в отличие от a. Но я не смог проверить это. Знаете ли вы, если это действительно имеет значение с точки зрения кэширования? Если это так, это может быть еще одна причина, чтобы избежать @ import. Стив Соудерс | 27 мая 2009 г. в 14:26. ​​Мюррей: Я этого не слышал, и в моих тестах этого не произошло.
 Liam12 июл. 2010 г., 19:08
Это кажется чрезвычайно важным моментом. Можете ли вы добавить ссылку?

Ваш ответ на вопрос