Como "304 não modificado" funciona?

Como "304 Não Modificado" é gerado?

Como um navegador determina se a resposta a uma solicitação http é 304?

É definido pelo navegador ou enviado do servidor?

Se enviado pelo servidor, como o servidor conhece os dados disponíveis no cache, também como define 304 como uma imagem?

Meu palpite, se gerado pelo navegador

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());

Estou confiando no provedor de API de terceiros para obter dados, analisar e enviá-los ao DB. Os dados podem ou não mudar durante cada solicitação, mas o cabeçalho sempre envia200, Não quero analisar, verifique o último ID exclusivo no banco de dados e assim por diante .. para determinar a alteração nos dados, nem compare o resultado diretamente, em vez demd5(), sha1() & crc32() HASHed o resultado e funciona bem, mas querendo saber o algoritmo para determinar304.

Eu quero usar o mesmo tipo de algoritmo para determinar a alteração nos dados.

questionAnswers(2)

yourAnswerToTheQuestion