|
|
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Я всегда думал что по умолчанию CSS-файлы подключаемые через link или @import - кешируются, однако сегодня решил проверить на своем сайте и оказалось что css не кешируется в IE(8) & FireFox(3.5), а в опере кешируется. Я полез в настройки IE и FireFox, но не нашел там настроек кеширования CSS. В гугле тоже не нашел почему IE и FireFox не кешируют css и как включить кеширование в этих браузерах. Может дело не в браузерах и не в их настройках, а в чем-то другом, например в заголовках HTTP-ответа? Вот такие вот заголовки есть в HTTP-ответе с моего сайта: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Влияют ли они на кеширование css? Если да, то как их исправить проще всего исправить (Shared apache hosting, PHP) и нужно ли их исправлять? И если дело в этих заголовках, то почему Опера кеширует css? Сорри, если вопросы простейшие, я с веб-программингом только косвенно сталкиваюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 19:55:32 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
авторЯ всегда думал что по умолчанию CSS-файлы подключаемые через link - кешируются так оно и есть, по крайне мере в осле, сафари и лисе (насчет оперы не в курсе) автороднако сегодня решил проверить на своем сайте и оказалось что css не кешируется в IE(8) & FireFox(3.5) сервак отдает респонс с кривыми хедерами, браузер соотв-но не кеширует статику авторЯ полез в настройки IE и FireFox, но не нашел там настроек кеширования CSS там нету такого ;) браузер оперирует таким понятием как временные файлы - скрипты/css и т.п. авторВлияют ли они на кеширование css? влияют, но каждый браузер ведет себя так как ему вздумается.. и зависит от того - как вы грузите - тегами или аяксом.. одно известно точно - если скрипты и цсс грузить аяксом - то наступите на кучу граблей связанных с кешированием, лучше грузить с помощью обычных тегов - тогда можно быть уверенным что контент с нулевым временем жизни и выставленными опциями - no cache - НЕ БУДЕТ кешировать присланный контент.. авторЕсли да, то как их исправить проще всего исправить (Shared apache hosting, PHP) и нужно ли их исправлять? И если дело в этих заголовках, то.. либо читать манул по http-протоколу и настраивать конфиги сервака, либо попросить помощи у админов этих самых серваков - это их работа =) авторпочему Опера кеширует css? каждый браузер написан разными людьми, а не киборгами =), у каждой команды свои взгляды на вещи, поэтому каждый софт ведет себя по разному ЗЫ удачи в решении ваших проблем.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2010, 00:17:02 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
LectorX, Спасибо за ответ. Я чуток поднаврал вам :) После того как внимательнее посмотрел в фиддлере, то увидел что браузер посылает запрос с заголовком If-Modified-Since и получает в ответ полный css файл только если тот релально изменился после указанной в If-Modified-Since даты. Это нормальное/правильное поведение? А вот опера просто не посылает запрос на css файл пока не сделать принудительное обновление страницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2010, 02:05:27 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
Для отмены кеширования используется "no-store, no-cache, must-revalidate". Для кеширования - max-age. Заголовки задаются для каждого файла. If-Modified-Since (сверка по дате последнего изменения файла) и Etag (сверка по уникальному идентификатору, меняющимся при изменении файла) работает в том случае, когда отменено кеширование. Работает вроде одинаково в стандартных браузерах (за исключением кнопок назад/вперёд в Опере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2010, 04:07:54 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
Скажите, а какое поведение считается стандартным? С включенным кешированием или без? И если с кешированием, то ставится ли "срок годности" (expires)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2010, 14:36:29 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
> какое поведение считается стандартным? С включенным кешированием или > без? Тут от задачи зависит. Если файл стилей лежит себе подолгу без изменений (а так чаще всего и бывает) - это с кешированием, а если генерится на лету под каждую страничку (зачем то так делают иногда) - тут кеширование будет только мешать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2010, 14:56:55 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
В общем я решил все проверить на реальном хостинге. Итак, 2 режима : а) Режим по умолчанию , т.е. в ответе заголовок: Код: plaintext б) Режим с включенным кешированием , когда из PHP вызываю session_cache_limiter("private_no_expire"), что приводит к получению такого заголовка в ответе: Код: plaintext Поведение браузеров такое: 1) FireFox 3.5 а) В первом режиме FireFox прочно кеширует внешние javascript файлы и даже не проверяет их обновление, если только принудительно не обновить страницу. css же проверяется запросом с заголовком Код: plaintext 1. б) Во втором режиме FireFox перестает обновлять страницу вообще. Т.е. даже если в базе данных мы изменили выводимый на страницу контент - FireFox этого не отображает, даже если принудительно обновлять, т.к. отправляет запрос: Код: plaintext 1. 2. и получает ответ: Код: plaintext 1. 2) IE8 а) В первом режиме IE отправляет запросы If-Modified-Since & If-None-Match и для javascript и для css, т.е. грузит javascript и css только если они реально обновились. То же самое если принудительно обновить страницу. б) Во втором режиме IE так же отправляет запросы If-Modified-Since & If-None-Match и для javascript и для css. Но при этом он даже не пытается загрузить/обновить саму страницу, т.е. даже не отправляет запрос, т.е. ваши js/css обновятся, а шаблон и контент страницы - нет :) Для обновления контента не помогает даже принудительное обновление страницы. 3) Opera 10 а) В Опере, в первом режиме, обновление js & css зависит от того, в какое значение выставлена опция Check images в настройках. Если опция выставлена в значение Always, то опера отправляет запросы с If-Modified-Since & If-None-Match для проверки обновления js & css. Если выставлено значение, например, 5 часов, то соответственно проверяться будет раз в 5 часов, либо по принудительному обновлению страницы. б) Во втором режиме Опера не проверяет обновление js & css (не делает GET-запросов), а так же не делает GET запрос на саму страницу, т.е. ни обновление js & css, ни обновление контента мы не увидим, как в прочем и в других браузерах. А вот с принудительным обновлением у Оперы лучше. В отличие от IE & FF, Опера явно запрашивает содержимое страницы без If-Modified-Since & If-None-Match. Запросы на обновление js & css при принудительном обновлении идут уже с If-Modified-Since & If-None-Match. Какие выводы: 1) кеширование, если точно не представлять себе как оно работает в разных браузерах и какие последствия - достаточно опасная вещь. 2) кеширование можно включать только если страница обновляется редко (т.е. если на сайте нет страниц, которые обновляются в реальном времени) и даже в этом случае обязательно нужно ставить ограничение на период ограничения кеширования (например несколько часов или день) 3) FireFox ведет себя, на мой взгляд, чуть умнее чем IE, т.к. даже при отключенном кешировании не проверяет постоянно обновление javascript, что выглядит логично, ведь javascript обновляется очень редко. 4) Опера позволяет гибко управлять обновлением изображений, javascript и css с помощью настройки Check images, что есть плюс. Так же Опера ведет себя лучше чем IE & FF при включенном кешировании и принудительном обновлении, т.к., напомню, Опера в этом случае полностью обновляет содержимое страницы, а IE & FF - оставят вас в счастливом неведении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2010, 16:47:22 |
|
||
|
Кеширование CSS
|
|||
|---|---|---|---|
|
#18+
Странно, но у меня все браузеры (IE8, FF, Opera, Chrom, Safari) ведут себя почти одинаково, разницы нет - css, js, png и т.д. no-store, no-cache, must-revalidate - отмена кеширования, max-age - наоборот. If-Modified-Since при кешировании не появляется вообще (если не нажать обновления страницы, а открывать её через url). При отмене кеширования If-Modified-Since появляется всегда для дополнительных файлов и идёт сверка по дате последнего изменения файла. Сама страница обновляется полностью, единственное исключение - кнопки назад/вперёд в Опере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2010, 04:07:31 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=258&tid=1453424]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
312ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 608ms |

| 0 / 0 |
