Вопрос проверяет понимание механизмов HTTP-кеширования и условных запросов для оптимизации работы веб-приложений.
ETag (Entity Tag) — это HTTP-заголовок ответа, который содержит уникальный идентификатор (обычно хеш) текущей версии ресурса. Когда клиент получает ответ с ETag, он может сохранить его и использовать в последующих запросах через заголовок If-Match. If-Match — это условный заголовок запроса, который содержит ETag, полученный ранее. Сервер сравнивает переданный ETag с текущим значением ресурса. Если они совпадают, сервер выполняет запрос (например, обновляет данные). Если нет — возвращает ошибку 412 Precondition Failed.
// Пример на JavaScript (fetch) с ETag и If-Match
async function updateResource(id, newData, etag) {
const response = await fetch(`/api/resource/${id}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'If-Match': etag // передаем сохраненный ETag
},
body: JSON.stringify(newData)
});
if (response.status === 412) {
console.log('Ресурс был изменен другим пользователем');
} else if (response.ok) {
const newEtag = response.headers.get('ETag');
console.log('Обновлено, новый ETag:', newEtag);
}
}ETag и If-Match — это мощные инструменты для оптимизации кеширования и обеспечения целостности данных при конкурентном доступе. Их стоит применять в REST API, где важна актуальность данных и предотвращение конфликтов редактирования.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию