Cache hit ratio là gì? Tại sao đây là khái niệm quan trọng trong CDN

Cache hit ratio là kết quả của phép chia giữa: số lượng yêu cầu nội dung mà bộ nhớ cache thực hiện thành công (cache hit), so với số lượng yêu cầu mà bộ nhớ cache nhận được (cache hit + cache miss). Một mạng lưới phân tán nội dung (CDN) cung cấp một kiểu bộ nhớ cache, và CDN có hiệu suất cao sẽ có cache hit ratio cao.

Công thức cache hit ratio được tính như sau:

(Số lượng cache hit) / (số lượng cache hit + số lượng cache miss) = Cache hit ratio

Ví dụ: nếu một CDN có 390 lần cache hit và 20 lần cache miss trong một khoảng thời gian nhất định, thì cache hit ratio trong khoảng thời gian ấy bằng 390 chia cho 410 hoặc 0,951. Tỷ lệ truy cập bộ nhớ cache (cache hit ratio, còn gọi là cache hit rate) cũng có thể được biểu thị bằng phần trăm, bằng cách nhân kết quả này với 100. Theo tỷ lệ phần trăm, phần trên có cache hit ratio là 95,1%.

Cache hit ratio là chỉ số áp dụng cho bất kỳ kiểu bộ nhớ cache nào; nó không chỉ dùng để đo cho riêng hiệu suất CDN mà thôi. Tuy nhiên, nó là một tiêu chuẩn đặc biệt quan trọng đối với CDN. Hầu hết các dịch vụ CDN sẽ cung cấp cho khách hàng số liệu này trong giao diện người dùng hoặc dashboard (bảng quản trị) của họ.

Ví dụ:

Cache hit ratio của một website trên Cloudflare

Như hình trên trong thống kê của một website sử dụng Cloudflare APO, bạn dễ dàng tính được cache hit ratio = 6066 / 6682 = 90,07%

Còn đây là một thống kê tương tự trên CDN của BunnyCDN:

Cache hit rate trên trang BunnyCDN

Cache hit là gì?

“Cache hit” xảy ra khi một tệp được yêu cầu từ bộ nhớ cache và bộ nhớ cache có khả năng đáp ứng yêu cầu đó. Ví dụ: nếu người dùng truy cập trang web hiển thị hình ảnh một con mèo đang chơi đàn piano, thì trình duyệt có thể gửi yêu cầu tới CDN của trang web cho hình ảnh này. Nếu CDN CÓ một bản sao của ảnh trong bộ nhớ cache của nó, thì yêu cầu dẫn đến một lần cache hit và ảnh được gửi đến trình duyệt máy khách.

Cache miss là gì?

Cache miss là khi bộ nhớ cache không chứa nội dung được yêu cầu. Nếu bản sao của bức tranh mèo chơi đàn piano hiện KHÔNG có trong bộ nhớ cache CDN, yêu cầu này dẫn đến cache miss, và yêu cầu được chuyển đến máy chủ gốc (origin server) cho bức ảnh gốc. Máy chủ CDN sẽ lưu ảnh vào bộ nhớ cache sau khi máy chủ gốc phản hồi, nhờ đó các yêu cầu tiếp theo sẽ dẫn đến kết quả là cache hit.

Cache hit ratio của CDN cho hầu hết các trang web là bao nhiêu thì được xem là tốt?

Một trang web điển hình, chủ yếu được tạo thành từ nội dung tĩnh có thể dễ dàng có cache hit ratio trong phạm vi 95-99%. Tuy nhiên, đạt được chỉ số này càng cao càng tốt không phải là mục tiêu duy nhất của CDN. Ngoài ra, một trang web có nhiều nội dung động có thể có cache hit ratio thấp hơn nhiều (mặc dù nội dung động lưu vào bộ nhớ đệm cache hiện đã trở nên khả thi với các cài đặt thích hợp).

Cache hit ratio cao luôn đồng nghĩa với việc CDN có hiệu quả tốt?

Cache hit ratio không phải là chủ đề chốt hạ (last word) khi bàn về hiệu suất CDN; Các yếu tố khác cũng vô cùng quan trọng trong việc đánh giá hiệu quả của CDN. Ví dụ, nội dung được phân phát từ đâu cũng rất quan trọng. 

Lý tưởng nhất là CDN sẽ phân phát nội dung từ máy chủ CDN gần nhất với người dùng cuối. Nếu điều này không xảy ra, hiệu suất của CDN sẽ không tối ưu. 

Hệ thống máy chủ của CloudFlare CDN được xây dựng để phục vụ cho bất kỳ nội dung nào từ khoảng 200 vị trí bất kỳ trên toàn thế giới. Mọi nội dung được lưu trong bộ nhớ cache trong một trung tâm dữ liệu cũng có thể được phân phát từ mọi trung tâm dữ liệu khác.

Caching là một phần quan trọng trong nhiệm vụ của CDN, nhưng mục đích chính của nó là làm cho các thuộc tính web nói chung nhanh hơn và đáng tin cậy hơn. Nhiều chỉ số hiệu suất giúp đo lường mức độ mà CDN giúp cải thiện tốc độ ứng dụng web hoặc website.

Bổ sung từ Speed Family: để cải thiện chỉ số cache hit rate một số dịch vụ CDN, như BunnyCDN tạo thêm một bộ nhớ trung gian lưu trữ dữ liệu vĩnh viễn nằm giữa CDN và máy chủ gốc. BunnyCDN đặt tên nó là prema-cache, biện pháp này giúp đẩy cache hit rate lên cao nhất có thể, dù tốc độ CDN có thể giảm đi chút ít (tuy vậy may mắn là thường không đáng kể gì). Nếu bạn có người dùng chủ yếu ở Việt Nam tôi rất khuyến khích dùng prema-cache của Bunny.

Làm thế nào để cải thiện cache hit rate nếu CDN của bạn không có tính năng tương tự prema-cache của Bunny? Cách làm là hạn chế việc thay đổi các tài nguyên tĩnh trên trang theo cách không cần thiết. Trong khi tài nguyên media như ảnh hiếm khi thay đổi, thì các file CSS và JS lại rất hay được bổ sung, nhất là khi bạn dùng tính năng gộp hoặc/và nén CSS/JS. Nhìn chung với công nghệ của http/2 bạn có thể bỏ tính năng gộp/nén đi được rồi, điều này có nhiều lợi ích khác nữa, ngoài chuyện cải thiện số lượng cache hit của bạn.

(Dịch từ bài viết What is a Cache Hit Ratio? của Cloudflare)