Скільки разів писано і переписано про тезі … Здавалося б, все! Вистачить! Закрили тему! Але ні! Адже не все сказали! Вірніше, дещо-де все, але це ще спробуй знайди. Потикайся у всякі Rambler’s і Яndex’и…

Отже, поговоримо про кешуванні. Власне, для чого воно потрібне всім нам, бідним користувачам інтернету, як середовища проживання. Скорочення трафіку — ось вона, користь! Ну навіщо нам десять разів на день заново качати з мережі першу сторінку якого-небудь пошукового каталогу, коли можна акуратно покласти її в кеш і забути про повільне завантаження для цього сайту? По-від, саме так і роблять. Заглибимося в проблему.

Всім відомо, що різних версіях протоколів HTTP застосовуються свої директиви управління кешуванням. Cache-Control — директива протоколу HTTP/1.1. А параметри у неї ось такі:

Всі перераховані атрибути (крім взаємовиключних) можна перераховувати через кому. Розумію, що не все ясно, тепер дещо поясню.

1. Заборона кешування взагалі (документ не буде кешуватися ні proxy-сервером, ні браузером):

2. Документ буде кешуватися браузером, але не буде кешуватися proxy-сервером.

3. Документ буде кешуватися, навіть якщо і не повинен, начебто, за звичайних обставин.

4. Документ кешується, але не зберігається в архіві.

5. Можна прямо сказати браузеру: «Обнови-но мені цю сторінку». (В параметрі max-age зазначено, на скільки секунд кешується документ). Може бути корисно при використанні PHP для програмного оновлення сторінок.

6.А можна сказати це тільки проксі-сервера.

У спадок від протоколу HTTP 1.0 нам дістався дуже простий спосіб керування кешуванням, визначається директиви Pragma. Ця штука є загальною директивою заголовка HTTP-повідомлення в HTTP/1.0, та інших значень, крім no-cahce, не має:

В протоколі HTTP 1.1 дана директива замінена директивою Cache-Control зі значенням no-cache. Більшість серверів і клієнтів підтримують цю директиву і правильно її відпрацьовують.

Для заборони на кешування іноді не достатньо застосування директив управління кешуванням. Так Netscape кешує документи або їх компоненти навіть при наявності директив Cache-Control і Pragma. Для того, щоб змусити перечитати компонент сторінки (адже він виходить з сервера за самостійним HTTP-запит) можна встановити директиву Expires.

Ось такий от вийшов розмова про кешуванні. А з тегом META ми ще зустрінемося. І не раз…