cache

Cache là đổi bộ nhớ lấy thời gian: giữ lại kết quả đã tính để lần sau khỏi tính lại. Ba chặng, đi từ vì sao nó nhanh tới vì sao nó là nguồn của những lỗi khó chịu nhất.

9 cột mốc · 2 có bài trong app

Bắt đầu
  1. 1Vì sao nó nhanh

    Hiểu con đường dữ liệu đi, và chỗ nào tiết kiệm được.

  2. 2Giữ cho dữ liệu đừng cũ

    Biết khi nào phải bỏ bản đã cất đi, và bỏ bằng cách nào.

    • TTLtự tìm hiểuCho mỗi bản một hạn dùng. Đơn giản nhất, và đủ cho phần lớn trường hợp.
    • Invalidationtự tìm hiểuDữ liệu gốc đổi thì xoá bản đã cất. Nghe dễ, nhưng đây là một trong hai bài toán khó nhất của ngành.
    • stale-while-revalidatetự tìm hiểuTrả bản cũ ngay lập tức, rồi lặng lẽ đi lấy bản mới. Người dùng không phải chờ ai cả.
  3. 3Khi cache làm hỏng việc

    Nhận ra ba kiểu hỏng mà cache gây ra, trước khi chúng gây ra cho bạn.

    • Dữ liệu cũ hiện ratự tìm hiểuNgười dùng sửa xong, tải lại, vẫn thấy bản cũ. Gần như luôn là cache ở một tầng nào đó.
    • Cache stampedetự tìm hiểuBản cache hết hạn, một nghìn request cùng lúc đâm thẳng vào database.
    • Khoá cachetự tìm hiểuQuên đưa user id vào khoá là người này thấy dữ liệu của người kia. Lỗi rất nặng, rất dễ mắc.
Đích

Lộ trình dừng ở đây

Ba chặng trên là toàn bộ ý tưởng của cache. Phần dưới là những chỗ nó xuất hiện dưới tên khác.

  • HTTP cache headersCache-Control, ETag — cache mà trình duyệt tự làm cho bạn.
  • RedisCái tủ chứa cache dùng chung cho nhiều máy chủ.
  • CDNCache đặt gần người dùng về mặt địa lý.
  • MemoizationCũng chính ý tưởng đó, thu nhỏ vào trong một hàm.