Как работает" 304 Not Modified"?




  • как генерируется "304 Not Modified"?


  • как браузер определяет, является ли ответ на http-запрос
    это 304?


  • он устанавливается браузером или отправляется с сервера?


  • если отправлено сервером, как сервер знает данные, доступные в кэше, также
    как он устанавливает 304 на изображение?



мое предположение, если генерируется браузер



function is_modified()
{
return get_data_from_cache() === get_data_from_url();
};

function get_data_from_cache()
{
return some_hash_or_xxx_function(cache_data);
}

function get_data_from_url()
{
return some_hash_or_xxx_function(new_data);
}

function some_hash_or_xxx_function(data)
{
// do something with data
// what is that algorithm.?
return result;
}

console.log(is_modified());


Я полагаюсь на стороннего поставщика API, чтобы получить данные, проанализировать и подтолкнуть его к БД. Данные могут изменяться или не изменяться во время каждого запроса, но заголовок всегда отправляет 200, Я не хочу разбирать, проверять последний уникальный идентификатор в БД и так далее.. чтобы определить изменение данных, ни сравнить результат напрямую, а я md5(),sha1() & crc32() Хешированный результат & работает нормально, но интересно алгоритм для определения 304.



Я хочу использовать то же самое вид алгоритма для определения изменения данных.

709   2  

2 ответов:

когда браузер помещает что-то в свой кэш, он также сохраняет Last-Modified или ETag заголовок с сервера.

затем браузер отправляет запрос с If-Modified-Since или If-None-Match заголовок, сообщающий серверу отправить 304, если содержимое все еще имеет эту дату или ETag.

сервер должен каким-то образом вычислить дату изменения или ETag для каждой версии каждого ресурса; это обычно происходит из файловой системы или отдельного столбца базы данных.

Last-Modified: дата последнего изменения для запрошенного объекта

If-Modified-Since: позволяет вернуть 304 не измененный, если последний дата изменения не изменилась.

ETag : представляет собой непрозрачный идентификатор, присваиваемый веб-сервером конкретную версию ресурса по URL. Если ресурс представление по этому URL-адресу когда-либо меняется, новый и другой ETag назначенный.

если-нет-Матч : позволяет 304 не Изменены, чтобы быть возвращены, если ETag является не менявшийся.

кэш хранилища браузера с датой (Последнее изменение) или идентификатором (ETag), когда вам нужно снова запросить URL-адрес, браузер отправляет сообщение запроса с заголовком:

enter image description here

сервер вернет 304, когда оператор if имеет значение False, и браузер будет использовать кэш.

Comments

    Ничего не найдено.