Подтвердить что ты не робот

Браузерное кэширование файлов CSS

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

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

4b9b3361

Ответ 1

Ваш файл, вероятно, будет кэшироваться - но это зависит...

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

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

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

...

Итак, во-первых, прочитайте некоторые из превосходных HTTP-кеширования. HTTP-кеширование и кэширование для Content Publishers стал для меня настоящим открытием: -)

Затем установите и скриптируйте Firebug и Live HTTP Headers, чтобы узнать, какие заголовки ваш сервер действительно отправляет.

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

...

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

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

Если вы правильно настроили свой сервер, он должен будет вернуть супер-короткую 304 Not Modified (с очень низкой полосой пропускания) и после что браузер будет использовать кеш как обычно.

Ответ 2

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

/style.css?modified=20012009

Ответ 3

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

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

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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