W jaki sposób generowane są odpowiedzi „304 Not Modified”?
W jaki sposób przeglądarka ustala, czy odpowiedź na żądanie HTTP to 304?
Czy jest ustawiana przez przeglądarkę czy wysyłana z serwera?
W przypadku wysłania przez serwer, w jaki sposób serwer zna dane dostępne w pamięci podręcznej, a także w jaki sposób ustawia 304 obraz?
Domyślam się, jeśli jest generowany przez przeglądarkę:
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 the data.
// What is that algorithm?
return result;
}
console.log(is_modified());
Opieram się na zewnętrznym dostawcy API, aby pobierać dane, analizować je i przekazywać do mojej bazy danych. Dane mogą, ale nie muszą, zmieniać się podczas każdego żądania, ale nagłówek zawsze wysyła 200
. Nie chcę analizować, sprawdzać ostatni unikatowy identyfikator w DB i tak dalej ..., aby określić zmiany w danych, ani porównać wynik bezpośrednio, a ja md5()
, sha1()
i crc32()
mieszany wynik i działa dobrze, ale zastanawiam się o algorytm do ustalenia 304
.
Chcę użyć tego samego algorytmu, aby określić zmianę moich danych.