Nó nhận diện object bằng __typename + id của record.
Nhờ vậy cùng một object xuất hiện trong nhiều truy vấn chỉ được lưu một bản, và cập nhật nó ở một nơi tự phản ánh ở mọi màn hình đang hiển thị.
js
// store phẳng, khoá theo __typename + id
{
"Post:42": { id: "42", title: "Hello", author: { __ref: "User:7" } },
"User:7": { id: "7", name: "An" } // sửa chỗ này là mọi màn hình đổi theo
}Điều kiện: schema phải trả về id và client phải hỏi field đó. Thiếu id thì thư viện không chuẩn hoá được, phải cache theo truy vấn, và cập nhật một chỗ không phản ánh sang chỗ khác.
Phần vẫn phải làm tay: thêm và xoá phần tử khỏi danh sách, vì thư viện không biết record mới thuộc danh sách nào. Đây là phần tốn công nhất khi làm việc với normalized cache.
Một lựa chọn nhẹ hơn cho ứng dụng vừa và nhỏ: dùng thư viện cache theo truy vấn và làm mới các truy vấn liên quan sau khi ghi.