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

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

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

    Возможно, ваш файл будет кэширован, но это зависит …

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

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

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

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

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

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

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

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

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

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

     /style.css?modified=20012009 

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

      

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

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

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

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

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

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