Các phản hồi "304 không được sửa đổi" được tạo như thế nào?
Làm thế nào để trình duyệt xác định xem phản hồi cho yêu cầu HTTP có phải là 304 không?
Nó được thiết lập bởi trình duyệt hoặc gửi từ máy chủ?
Nếu được gửi bởi máy chủ, làm thế nào để máy chủ biết dữ liệu có sẵn trong bộ đệm, cũng như cách nó đặt 304 thành hình ảnh?
Tôi đoán, nếu nó được tạo bởi trình duyệt:
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());
Tôi đang dựa vào nhà cung cấp API của bên thứ ba để lấy dữ liệu, phân tích và đẩy nó vào cơ sở dữ liệu của tôi. Dữ liệu có thể hoặc không thể thay đổi trong mỗi yêu cầu, nhưng tiêu đề luôn gửi 200
. Tôi không muốn phân tích, kiểm tra ID duy nhất cuối cùng trong DB và vv ... để xác định thay đổi dữ liệu, cũng không so sánh trực tiếp kết quả thay vì tôi md5()
, sha1()
và crc32()
băm kết quả và hoạt động tốt, nhưng tôi tự hỏi về thuật toán để xác định 304
.
Tôi muốn sử dụng cùng loại thuật toán để xác định sự thay đổi trong dữ liệu của mình.