W E B
Скільки разів писано та переписано про тег. Здавалося б, усе! Досить! Закрили тему! Але немає! Не всі ж сказали! Вірніше, подекуди все, але це спробуй знайди ще. Потикайся у всякі Rambler's і Яndex'и.
Отже, поговоримо про кешування. Власне, навіщо воно потрібне всім нам, бідним користувачам інтернету, як довкілля. Скорочення трафіку – ось вона, користь! Ну навіщо нам десять разів на день заново качати з мережі першу сторінку якогось пошукового каталогу, коли можна акуратно покласти її в кеш і забути про повільне завантаження для цього сайту? Ось, саме так і роблять. Заглибимося у проблему.
Всім відомо, що в різних версіях протоколів HTTP застосовуються свої директиви управління кешуванням. Cache-Control – директива протоколу HTTP/1.1. А параметри у неї такі:
http-equiv="Cache-Control" content= "[no-cache], [public], [private], [no-store], [no-transform], [must-reval >>
Усі перелічені атрибути (крім взаємовиключних) можна перераховувати через кому. Розумію, не все ясно, зараз дещо поясню.
1. Заборона на кешування взагалі (документ не кешуватиметься ні proxy-сервером, ні браузером):
http-equiv="Cache-Control" content="no-cache" >
2. Документ кешуватиметься браузером, але кешуватиметься proxy-сервером.
http-equiv="Cache-Control" content="private" >
3. Документ кешуватиметься, навіть якщо й не повинен начебто за звичайних обставин.
http-equiv="Cache-Control" content="public" >
4. Документ кешується, але не зберігається в архіві.
http-equiv="Cache-Control" content="no-store" >
5. Можна прямо сказати браузеру: "Онови мені цю сторінку". (У параметрі max-age вказано, на скільки секундкешується документ). Може бути корисним при використанні PHP для оновлення сторінок.
http-equiv="Cache-Control" content="max-age=3600, must-reval >>
6. А можна сказати це лише проксі-серверу.
http-equiv= "Cache-Control" content= "max-age=3600, proxy-reval >>
У спадок від протоколу HTTP 1.0 нам дістався дуже простий спосіб керування кешуванням, що визначається директивою Pragma. Ця штука є загальною директивою заголовка HTTP-повідомлення в HTTP/1.0, та інших значень, крім no-cahce, не має:
http-equiv="Pragma" content="no-cache" >
У протоколі HTTP 1.1 ця директива замінена директивою Cache-Control зі значенням no-cache. Більшість серверів та клієнтів підтримують цю директиву та правильно її відпрацьовують.
Для заборони кешування іноді мало застосування директив управління кешуванням. Так Netscape кешує документи чи його компоненти навіть за наявності директив Cache-Control і Pragma. Для того, щоб змусити перечитати компонент сторінки (адже він виходить з сервера за самостійним HTTP-запитом) можна встановити директиву Expires .
Ось така ось вийшла розмова про кешування. А з тегом META ми ще зустрінемося. І неодноразово.
HTML. "Та це ж просто! - махнеш ти рукою. - Набір тегів!" Хм, набір-то він набір, ось тільки браузери цей набір інтерпретують дуже по-різному.