1. Заголовок Keep-Alive

І ще кілька корисних заголовків. Заголовок Keep-Alive говорить серверу, що з'єднання потрібно залишити відкритим: сервер не закриватиме з'єднання одразу після надсилання відповіді. Це призведе до того, що наступний запит від цього клієнта до сервера виконається швидше.

Приклад такого заголовка:


           Connection: Keep-Alive
        

Але якщо всі клієнти вимагатимуть постійного з'єднання, тоді проблеми почнуться вже на сервері. Сервер буде або недоступний, або почне закривати з'єднання на свій вибір.

2. Заголовок Cache-Control

За допомогою заголовка Cache-Control можна керувати кешуванням контенту. Грамотно налаштоване кешування прискорює роботу з контентом, криво налаштоване створює проблеми на рівному місці.

Щоб вимкнути кешування, потрібно написати такий заголовок:


           Cache-Control: no-cache, no-store, must-revalidate
        

У кеші не повинно нічого зберігатися – ні щодо запитів клієнта, ані щодо відповідей сервера. Запит завжди надсилається на сервер, відповідь завжди завантажується повністю.

Також можна ввімкнути найпримітивніший і найнадійніший тип кешування:


           Cache-Control: no-cache
        

Перед тим, як видати копію, кеш робить запит до вихідного сервера щодо актуальності ресурсу.

Можна вказати час кешування ресурсу в секундах. Виглядати цей заголовок буде так:


           Cache-Control: max-age=31536000
        

Цей заголовок визначає максимальний час зберігання контенту в кеші.

Детальніше про кешування ти можеш почитати тут.

3. Cookie

Сервер може зберігати дані на стороні клієнта. Такі дані називаються cookie. Втім, cookie може зберегти клієнт. Вони дуже корисні обом сторонам.

Наприклад, ти заходиш на сайт, а ти на ньому вже авторизований. Тобто коли ти залогінився до нього минулого разу, сервер наказав браузеру зберегти у себе інформацію про успішний логін певного користувача.

Ось як виглядає Cookie у запиті:


           Cache-Control: max-age=31536000
        

Cookie зазвичай зберігає браузер, і вони прив'язані до певного домену. Коли ти знову заходиш на той самий домен, cookie автоматично додаються до http-запиту та http-відповіді. Сервер/домен не може отримати cookie, які зберігає у браузері інший сервер/домен.

У кожного cookie є 4 основні параметри:

  • ім'я;
  • значення;
  • час дії (скільки часу їх зберігати);
  • домен, до якого прив'язані cookie.

Cookie зберігаються та передаються у текстовому вигляді, отже, і ім'я, і значення – це рядки. Якщо час дії cookie не вказано, вони знищуються після закриття браузера.

4. Session

Після того, як користувач залогінився на сайті, кажуть, що між сайтом та сервером встановилася сесія.

Сервер створює у себе спеціальний об'єкт – HttpSession, де зберігає всю інформацію для роботи з авторизованим клієнтом. А унікальний номер цього об'єкта зберігає у браузері у вигляді Cookie.

Вебсервери Java зазвичай використовують ім'я JSESSIONID для зберігання ідентифікатора сесії. Виглядає це приблизно так:


          Cookie: JSESSIONID =ABAD1D
        

На стороні сервера можна встановити час існування сесії, а також те, чи буде вона автоматично закриватися при закритті браузера.