|
||
|
||
Кэширование без секретовFireFalcon Сколько раз писано и переписано о тэге <META>. Казалось бы, все! Хватит! Закрыли тему! Но нет! Ведь не все сказали! Вернее, кое-где все, но это попробуй найди еще. Потыкайся во всякие Rambler'ы и Яndex'ы... Итак, поговорим о кэшировании. Собственно, для чего оно нужно всем нам, бедным пользователям интернета, как среды обитания. Сокращение трафика - вот она, польза! Ну зачем нам десять раз на день заново качать из сети первую страницу какого-нибудь каталога, когда можно аккуратненько положить ее в кэш и забыть о медленной загрузке для этого сайта? Во-от, именно так и делают. Углубимся в проблему. Всем известно, что разных версиях протоколов HTTP применяются свои директивы управления кэшированием. Cache-Control - директива протокола HTTP 1.1. А параметры у нее вот такие: <meta http-equiv="Cache-Control" content="[no-cache], Все перечисленные атрибуты (кроме взаимоисключающих) можно перечислять через запятую. Понимаю, не все ясно, сейчас кое-что поясню. 1. Запрет на кэширование вообще (документ не будет кэшироваться ни proxy-сервером, ни браузером): <meta http-equiv="Cache-Control" content="no-cache"> 2. Документ будет кэшироваться браузером, но не будет кэшироваться proxy-сервером: <meta http-equiv="Cache-Control" content="private"> 3. Документ будет кэшироваться, даже если и не должен, вроде бы, при обычных обстоятельствах: <meta http-equiv="Cache-Control" content="public"> 4. Документ кэшируется, но не сохраняется в архиве: <meta http-equiv="Cache-Control" content="no-store"> 5. Можно прямо сказать браузеру: "Обнови-ка мне эту страницу". (В параметре max-age указано, на сколько секунд кэшируется документ). Может быть полезно при использовании PHP для программного обновления страниц: <meta http-equiv="Cache-Control" content="max-age=3600, must-revalidate"> 6. А можно сказать это только прокси-серверу: <meta http-equiv="Cache-Control" content="max-age=3600, proxy-revalidate"> В наследство от протокола HTTP 1.0 нам достался очень простой способ управления кэшированием, определяется директивой Pragma. Данная штука является общей директивой заголовка HTTP-сообщения в HTTP 1.0, и других значений, кроме no-cache, не имеет: <meta http-equiv="Pragma" content="no-cache"> В протоколе HTTP 1.1 данная директива заменена директивой Cache-Control со значением no-cache. Большинство серверов и клиентов поддерживают эту директиву и правильно ее отрабатывают. Для запрета на кэширование иногда не достаточно применения директив управления кэшированием. Так, Netscape кэширует документы или их компоненты даже при наличии директив Cache-Control и Pragma. Для того, чтобы заставить перечитать компонент страницы (он ведь получается с сервера по самостоятельному HTTP-запросу) можно установить директиву Expires. Вот такой вот получился разговор о кэшировании. А с тэгом META мы еще встретимся. И не раз... Источник: http://www.web-anatomy.f2s.com/
|
||
|
||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |