1. gcTime

gcTime là thời gian data được cached trong tanstack. Sau khoảng thời gian này tính từ lúc bạn lấy nó ra cuối cùng, data sẽ gị garbage collector xoá đi.

Ví dụ bạn set gcTime = 5 phút, bạn gọi api lúc 10:00:00, từ 10:00:00 tới 10:05:00, bạn không gọi api đó lần nào nữa thì lúc 10:05:01, data đó sẽ bị xoá khỏi cached. Từ 10:05:01 trở đi, nếu bạn gọi api đó lần nữa, tanstack sẽ gọi api tới backend và cached nó 5 phút tiếp.

gcTime dễ hiểu vì nó rất giống với cachedTime thông thường.

staleTime có một chút đặc biệt vì nó là đặc trưng của tanstack.

2. staleTime

Ví dụ bạn vẫn set gcTime = 5 phút, nhưng staleTime = 2 phút.

  • 10:00:00 bạn gọi api lần đầu, tanstack gọi tới backend trả về cho bạn data và cache nó.
  • 10:03:00 bạn gọi api lần nữa, vì gcTime = 5 phút nên tanstack sẽ trả data từ cached về cho bạn ngay lập tức

Lúc 10:03:00 nếu tanstack trả về từ cached thì staleTime = 2 phút sẽ có ý nghĩa gì?

staleTime là thời gian được đặt để tanstack biết dữ liệu đang cached có bị cũ (stale) hay không, nếu nó là cũ tanstack sẽ chạy ngầm gọi api để làm mới dữ liệu đang được cached. Nghĩa là lúc 10:03:00 sau khi tanstack trả về từ cached, thì ngay lập tức tanstack sẽ chạy ngầm gọi api để làm mới dữ liệu đó (chú ý tanstack không chạy ngầm lúc 10:02:00). Sau khi dữ liệu được làm mới thì tanstack sẽ trả lại 1 lần nữa cho UI dữ liệu mới thay thế cho dữ liệu cũ.

 

gcTime vs staleTime