Кажется, существуют два разных способа реализации условных запросов с использованием HTTP-заголовков, которые могут использоваться для кэширования, запросов диапазона, управления concurrency и т.д....:
- If-Unmodified-Since и If-Modified-Since, где клиент отправляет временную метку ресурса.
- If-Modified и If-None-Modified, где клиент отправляет представление ресурса ETag.
В обоих случаях клиент отправляет часть информации о ресурсе, которая позволяет серверу определить, изменился ли ресурс с момента последнего его просмотра клиентом. Затем сервер решает, выполнять ли запрос в зависимости от условного заголовка, предоставленного клиентом.
Я не понимаю, почему доступны два разных подхода. Разумеется, ETags заменяет временные метки, поскольку сервер может довольно легко выработать ETags с отметками времени.
Итак, мои вопросы:
- В каких сценариях вы можете одобрить If-Unmodified-Since/If-Modified-Since через ETags?
- В каких сценариях вам могут понадобиться оба?