Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: HTTP caching, cache busting, GET request, cache control, ETag, query string

Как можно обойти кеширование GET-запроса?

Вопрос проверяет понимание механизмов кеширования HTTP-запросов и способов его обхода для получения актуальных данных.

Короткий ответ

Кеширование GET-запроса можно обойти несколькими способами. Самый простой — добавить уникальный параметр в URL, например, timestamp или случайное число. Также можно использовать заголовки Cache-Control: no-cache или Pragma: no-cache. На стороне сервера можно настроить ETag или Last-Modified для проверки актуальности данных.

Длинный ответ

Обход кеширования GET-запроса

Кеширование GET-запросов — это механизм, который позволяет браузеру или прокси-серверу сохранять ответы на повторяющиеся запросы, чтобы ускорить загрузку и снизить нагрузку на сервер. Однако иногда требуется получить свежие данные, минуя кеш. Рассмотрим основные способы обхода кеширования.

Добавление уникального параметра в URL

Самый распространённый метод — добавить к URL уникальный параметр, например, текущее время или случайное число. Это заставляет браузер считать запрос новым и не использовать кешированный ответ.

fetch('/api/data?t=' + Date.now());
// или
fetch('/api/data?_=' + Math.random());

Использование HTTP-заголовков

Можно явно указать браузеру не кешировать запрос, установив соответствующие заголовки. На стороне клиента это делается так:

fetch('/api/data', {
  headers: {
    'Cache-Control': 'no-cache',
    'Pragma': 'no-cache'
  }
});

На стороне сервера можно настроить ответ с заголовками Cache-Control: no-store или Expires: 0.

Использование ETag и Last-Modified

Сервер может возвращать заголовки ETag (уникальный идентификатор версии) или Last-Modified (дата последнего изменения). Клиент отправляет их в запросе (If-None-Match или If-Modified-Since), и сервер отвечает 304 Not Modified, если данные не изменились. Это не обходит кеш полностью, но позволяет проверить актуальность.

Метод POST вместо GET

POST-запросы по умолчанию не кешируются браузерами. Если это допустимо по логике приложения, можно заменить GET на POST. Однако это нарушает семантику HTTP и может быть неудобно.

Вывод

Выбор метода зависит от контекста: для простых случаев подойдёт добавление параметра, для более контролируемого кеширования — заголовки Cache-Control, а для проверки актуальности — ETag. Важно помнить, что чрезмерное обход кеша может увеличить нагрузку на сервер.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Networks

Ключевые слова

#HTTP caching

#cache busting

#GET request

#cache control

#ETag

#query string

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию