Bộ nhớ đệm là gì? Dữ liệu được lưu trong bộ nhớ đệm giúp tăng tốc độ như thế nào?

Bộ nhớ đệm là gì? Dữ liệu được lưu trong bộ nhớ đệm giúp tăng tốc độ như thế nào?

Một CPU hiện đại có thể lấy một giá trị từ bộ nhớ đệm gần nhất trong thời gian chưa đến một nano giây. Việc truy cập vào bộ nhớ chính để lấy cùng giá trị đó mất thời gian gấp khoảng trăm lần. Vì vậy, con chip thực hiện điều hiển nhiên: nó giữ một bản sao của dữ liệu mà nó có khả năng cần ngay bên cạnh nó. Bản sao đó là bộ nhớ đệm (cache), và thủ thuật này được lặp lại ở mọi lớp điện toán, từ silicon trong bộ xử lý của bạn cho đến máy chủ đã cung cấp trang này. Hướng dẫn này giải thích bộ nhớ đệm là gì, cách hoạt động của bộ nhớ đệm, mọi nơi nó tồn tại và liệu bạn có nên xóa nó hay không.

Định nghĩa bộ nhớ đệm: bộ nhớ đệm thực sự là gì

Bộ nhớ đệm là nơi lưu trữ tạm thời. Nó nhỏ, nhanh và được đặt càng gần với thành phần cần đến càng tốt. Nó lưu giữ các bản sao dữ liệu mà hệ thống dự kiến sẽ cần lại, vì vậy khi cần thiết, hệ thống có thể truy xuất bản sao thay vì phải thực hiện lại các thao tác chậm hoặc tốn kém. Mở trang này lần thứ hai và một phần lớn dữ liệu sẽ được tải từ bản sao đã có sẵn trên máy tính của bạn, chứ không phải từ máy chủ.

Từ "tạm thời" đóng vai trò quan trọng ở đây. Dữ liệu được lưu trong bộ nhớ cache không bao giờ là bản gốc. Nó là một bản sao, được giữ lại chỉ để tăng tốc độ, và bạn có thể xóa nó bất cứ khi nào bạn muốn. Xóa nó đi và không có gì có giá trị biến mất. Hệ thống chỉ cần quay lại nguồn gốc thực sự và xây dựng lại bản sao. Số dư tài khoản ngân hàng của bạn không nằm trong bộ nhớ cache; một bản sao của trang web hiển thị số dư đó thì có thể. Khoảng cách giữa nguồn gốc thực sự và bản sao dùng một lần đó chính là lý do tại sao việc sử dụng bộ nhớ cache lại an toàn cho mọi thứ. Trường hợp xấu nhất, nếu bản sao bị thiếu hoặc sai, hệ thống sẽ không sao, lấy dữ liệu từ nguồn gốc và tiếp tục hoạt động.

Cách thức hoạt động của bộ nhớ đệm: truy cập thành công, truy cập thất bại và loại bỏ khỏi bộ nhớ đệm

Mọi bộ nhớ đệm, ở mọi nơi, đều hoạt động dựa trên một câu hỏi duy nhất: Tôi đã có bản sao của cái này chưa? Có nghĩa là câu trả lời nhanh chóng. Cung cấp bản sao, bỏ qua đường dẫn chậm, xong. Không có nghĩa là bạn thực hiện công việc chậm đó một lần: lấy từ nguồn, trả lại kết quả và giữ một bản sao để các yêu cầu trong tương lai được nhanh chóng. Đó là toàn bộ cơ chế. Phần còn lại là việc quản lý xung quanh hai vấn đề phức tạp, đó là cần loại bỏ cái gì khi dung lượng bộ nhớ đệm sắp hết và làm thế nào để tránh trả lại một bản sao đã lỗi thời.

truy cập bộ nhớ cache thành công so với truy cập bộ nhớ cache thất bại

Tìm thấy rồi? Đó là một lần truy cập thành công vào bộ nhớ cache. Không tìm thấy? Đó là một lần truy cập thất bại vào bộ nhớ cache, buộc hệ thống phải truy cập vào bộ nhớ đệm chậm hơn. Tỷ lệ các yêu cầu kết thúc bằng một lần truy cập thành công được gọi là tỷ lệ truy cập thành công (hit ratio), và đó là con số mà các kỹ sư thực sự theo dõi. Một mạng phân phối nội dung (CDN) phục vụ các tệp tĩnh như hình ảnh và bảng định kiểu hướng đến tỷ lệ 95 đến 99%. Đạt được tỷ lệ đó, và hầu hết mọi khách truy cập đều nhận được một bản sao gần đó trong khi máy chủ gốc hầu như không bị tác động. Tỷ lệ truy cập thành công thấp có nghĩa là bộ nhớ cache chủ yếu chỉ mang tính chất trang trí.

Khi bộ nhớ đệm đầy: chính sách loại bỏ

Bộ nhớ đệm được thiết kế nhỏ gọn một cách có chủ đích. Lưu trữ nhanh tốn kém, vì vậy không bao giờ có đủ chỗ cho mọi thứ, và một khi bộ nhớ đệm đầy, một số thứ phải bị loại bỏ. Quy tắc chọn ra thứ bị loại bỏ chính là chính sách loại bỏ. Mặc định thông thường là Sử dụng ít nhất gần đây (LRU): loại bỏ bất cứ thứ gì không được sử dụng lâu nhất, với hy vọng rằng những gì bạn đã bỏ qua gần đây bạn sẽ tiếp tục bỏ qua. Các phương pháp khác tính toán khác nhau. Sử dụng ít nhất thường xuyên (LFU) theo dõi tần suất truy cập của từng mục. Vào trước ra trước (FIFO) chỉ đơn giản là loại bỏ mục cũ nhất. Cùng một rủi ro, chỉ khác hình thức. Mỗi chính sách thực chất là một phỏng đoán về bản sao nào bạn sẽ ít nhớ nhất.

Giữ bản sao luôn được cập nhật: Chính sách TTL và ghi

Một bản sao chỉ được coi là tốt khi nó vẫn khớp với bản gốc. Vì vậy, hầu hết các bộ nhớ đệm đều gắn cho mỗi mục một thời gian tồn tại (TTL): một bộ đếm ngược, sau đó bản sao được coi là hết hạn và phải được kiểm tra lại hoặc tải lại. Trên web, tiêu đề Cache-Control thiết lập đồng hồ này. Quy tắc được quy định trong RFC 9111 , và chỉ thị max-age của nó cho phép một phản hồi được lưu trong bộ nhớ đệm tối đa một năm, hoặc 31.536.000 giây nếu bạn muốn con số chính xác. Việc ghi dữ liệu là một nửa vấn đề khác. Ghi trực tiếp (write-through) lưu vào bộ nhớ đệm và nguồn cùng một lúc, điều này an toàn nhưng chậm hơn. Ghi ngược (write-back) lưu vào bộ nhớ đệm ngay bây giờ và nguồn sau đó, điều này nhanh hơn nhưng để lại một khoảng thời gian ngắn mà hai bên không khớp nhau. Hãy chọn sự đánh đổi phù hợp.

Cache là gì?

Các loại bộ nhớ đệm: từ CPU đến mạng phân phối nội dung

Đây là phần mà hầu hết các lời giải thích đều bỏ sót. Bộ nhớ cache của trình duyệt và bộ nhớ cache L1 của CPU nghe có vẻ khác biệt — nhưng chúng thực chất là cùng một ý tưởng ở các khoảng cách khác nhau. Mỗi lớp đều giữ các bản sao của dữ liệu truy cập chậm gần với bất cứ thứ gì cần đến nó. Đi theo từng bước từ trong ra ngoài và mô hình này lặp lại toàn bộ.

Bộ nhớ đệm: Các cấp độ bộ nhớ đệm CPU L1, L2, L3

Quá trình lưu trữ dữ liệu nhanh nhất diễn ra ngay trên bộ xử lý. Các CPU hiện đại có ba cấp bộ nhớ đệm được xây dựng từ SRAM, một loại bộ nhớ nhanh hơn nhiều so với DRAM được sử dụng cho bộ nhớ chính và đắt hơn nhiều trên mỗi byte. L1 rất nhỏ và hoạt động gần như tức thời, chỉ vài chục kilobyte mỗi lõi trả về dữ liệu trong khoảng một nano giây. L2 lớn hơn và chậm hơn một chút. L3 còn lớn hơn nữa và được chia sẻ giữa các lõi; Intel Core i9-14900K được trang bị 36 MB L3, và AMD Ryzen 9 7950X3D nâng dung lượng L3 lên 128 MB. Tất cả điều này tồn tại để bù đắp cho một khoảng cách: việc truy xuất dữ liệu từ L1 mất chưa đến một nano giây, trong khi bộ nhớ chính DDR5 mất khoảng 70 giây, chênh lệch khoảng một trăm lần. Bộ nhớ đệm hoạt động hiệu quả vì các chương trình tái sử dụng cùng một dữ liệu và dữ liệu nằm gần nó, một thói quen được gọi là tính cục bộ của tham chiếu.

Lớp Kích thước điển hình Thời gian truy cập điển hình Nó chứa đựng điều gì?
Bộ nhớ đệm CPU L1 32-80 KB mỗi lõi ~0,7-1 ns Các hướng dẫn và giá trị tiếp theo
Bộ nhớ đệm CPU L2 0,5-2 MB mỗi lõi ~3-4 ns Dữ liệu được sử dụng gần đây ở vùng lõi
Bộ nhớ đệm CPU L3 16-128 MB được chia sẻ ~10-20 ns Dữ liệu được chia sẻ giữa các lõi
Bộ nhớ chính (RAM) 8-64 GB ~70-100 ns Các chương trình đang chạy và dữ liệu hoạt động
Bộ nhớ SSD 256 GB-4 TB ~50-100 µs Các tập tin và hệ điều hành
nút biên CDN thay đổi ~20 ms qua mạng Bản sao trên web gần khách truy cập
Máy chủ gốc thay đổi ~100-200 ms xuyên vùng Nguồn gốc của sự thật

Bộ nhớ đệm của ổ đĩa, hệ điều hành và ứng dụng

Bên cạnh phần cứng, phần mềm còn có bộ nhớ đệm riêng. Hệ điều hành lưu trữ dữ liệu được truy cập thường xuyên, chẳng hạn như các tệp đã đọc gần đây, trong RAM dự phòng để việc mở lại chúng diễn ra tức thì. Cơ sở dữ liệu lưu trữ kết quả của các truy vấn phổ biến. Các ứng dụng thêm một lớp bộ nhớ chuyên dụng, thường là Redis hoặc Memcached, nằm giữa ứng dụng và cơ sở dữ liệu, và xử lý các yêu cầu lặp lại trong vòng micro giây. Nhiệm vụ của nó hoàn toàn giống với CPU: giữ những dữ liệu được truy cập nhiều nhất trong bộ nhớ nhanh hơn để bạn không phải trả giá hai lần cho tốc độ chậm.

Bộ nhớ đệm phía máy chủ và CDN

Lớp ngoài cùng trải rộng khắp internet. Khi máy chủ web lưu trữ các trang đã hoàn thành, nó tránh việc phải xây dựng lại chúng cho mỗi khách truy cập. Mạng phân phối nội dung (CDN) tiến xa hơn, sao chép các tài nguyên đó lên các máy chủ biên trải rộng khắp toàn cầu để mỗi yêu cầu được trả lời từ một máy tính gần người dùng về mặt vật lý. Một yêu cầu truy cập từ máy chủ biên của CDN có thể trả về trong khoảng 20 mili giây, so với 100 đến 200 mili giây khi yêu cầu phải vượt qua các châu lục để đến máy chủ gốc. Mô hình này hiện đang thống trị web: đến năm 2024, khoảng 75% nội dung của bên thứ ba được phân phối thông qua CDN.

Bộ nhớ đệm trình duyệt: những gì trình duyệt web của bạn lưu trữ

Bộ nhớ cache của trình duyệt là thứ mà hầu hết mọi người thực sự gặp phải. Khi tải một trang web, trình duyệt web sẽ âm thầm lưu trữ các thành phần của trang đó vào thiết bị của bạn: mã HTML, bảng định kiểu, tập lệnh, hình ảnh, phông chữ. Quay lại sau, trình duyệt sẽ đọc trực tiếp các tệp đó từ ổ đĩa thay vì tải lại, đó là lý do tại sao lần truy cập thứ hai vào một trang web lại mở nhanh hơn lần đầu. Logo của trang web? Được tải xuống một lần và sử dụng lại trên mọi trang hiển thị nó.

Điều khiến tôi khó hiểu là: phần lớn tốc độ đó lại không được tận dụng. Tính đến năm 2021, khoảng 90,4% phản hồi web trên máy tính để bàn có thể được lưu vào bộ nhớ cache , nhưng vẫn có đến 52% trang web nằm dưới mức phân vị thứ 25 trong bài kiểm tra bộ nhớ cache tiêu chuẩn của trình duyệt. Lợi ích nằm ngay đó, miễn phí, và hầu hết người dùng trên web lại bỏ qua nó. Thiết lập bộ nhớ cache đúng cách và bạn sẽ nhận được lợi ích ngay lập tức. Các lần truy cập tiếp theo sẽ nhanh hơn, mức sử dụng dữ liệu di động giảm xuống, và máy chủ gốc sẽ không còn phải xử lý các yêu cầu dư thừa nữa.

Cache là gì?

Lợi ích của bộ nhớ đệm: tại sao nó giúp mọi thứ nhanh hơn

Bộ nhớ đệm là một sự đánh đổi. Bạn bỏ ra một ít bộ nhớ và chấp nhận một rủi ro nhỏ là cung cấp dữ liệu hơi lỗi thời, đổi lại bạn có được tốc độ, tải trọng thấp hơn và chi phí thấp hơn. Ba lợi ích đó là lý do tại sao bộ nhớ đệm xuất hiện ở mọi lớp chứ không chỉ một lớp duy nhất.

Tốc độ là lợi thế rõ ràng nhất: việc cung cấp bản sao từ bộ nhớ gần đó nhanh hơn nhiều so với việc tính toán lại kết quả hoặc truyền tải nó qua mạng. Lợi ích thứ hai là giảm tải cho máy chủ nguồn. Mỗi yêu cầu được bộ nhớ đệm xử lý là một yêu cầu mà cơ sở dữ liệu hoặc máy chủ gốc không bao giờ phải xử lý, giúp hệ thống hoạt động ổn định trong thời gian lưu lượng truy cập tăng đột biến. Thứ ba là tiết kiệm chi phí: việc cung cấp các byte được lưu trong bộ nhớ đệm từ một nút biên rẻ hơn so với việc tạo ra chúng mới và gửi từ máy chủ trung tâm, và khi bạn cần truy cập dữ liệu nhiều lần, khoản tiết kiệm đó sẽ tăng lên nhanh chóng.

Lợi ích mà người dùng nhận thấy từ hiệu suất ứng dụng là có thật và có thể đo lường được. Nghiên cứu năm 2018 của Google về các trang web trên thiết bị di động cho thấy việc giảm thời gian tải trang chỉ một giây đã giúp tăng tỷ lệ chuyển đổi lên tới 27%, trong khi một nghiên cứu năm 2012 của Aberdeen Group, được trích dẫn rộng rãi, cho thấy chi phí của sự chậm trễ một giây là giảm 7% tỷ lệ chuyển đổi. Trang web nhanh hơn giúp giữ chân người dùng. Sử dụng bộ nhớ đệm là một trong những cách tiết kiệm nhất để đạt được điều đó.

Loại bộ nhớ đệm Nơi nó sinh sống Nó lưu trữ những gì Ai quản lý nó? Tuổi thọ điển hình
Bộ nhớ đệm CPU (L1/L2/L3) Trên bộ xử lý Hướng dẫn và dữ liệu quan trọng Phần cứng, tự động Micro giây
Bộ nhớ đệm trình duyệt Thiết bị của bạn HTML, CSS, JS, hình ảnh, phông chữ Trình duyệt web của bạn Từ giờ đến năm
Bộ nhớ đệm ứng dụng Bộ nhớ máy chủ ứng dụng Kết quả truy vấn, phiên Các nhà phát triển (Redis, Memcached) Từ giây đến giờ
Bộ nhớ đệm máy chủ / CDN Máy chủ biên trên toàn thế giới Trang, phương tiện, phản hồi API Chủ sở hữu trang web và CDN Mỗi TTL điều khiển bộ nhớ đệm
Bộ nhớ đệm DNS Hệ điều hành, bộ định tuyến, trình phân giải Tra cứu tên miền thành địa chỉ IP Trình phân giải DNS Từ 5 phút đến 24 giờ

Bạn có nên xóa dữ liệu được lưu trong bộ nhớ đệm không, và khi nào?

Mọi người thường coi việc xóa bộ nhớ cache như một việc vặt trong danh sách kiểm tra bảo trì. Hãy bỏ qua danh sách đó. Nó thực chất chỉ là một công cụ khắc phục sự cố, không hơn không kém. Hầu hết các ngày, hãy để dữ liệu trong bộ nhớ cache ở đó, vì nó đang âm thầm giúp mọi trang web bạn truy cập lại tải nhanh hơn.

Vậy khi nào việc xóa bộ nhớ cache đáng để thực hiện? Thành thật mà nói, chỉ có ba trường hợp. Một trang web bị lỗi hoặc liên tục hiển thị phiên bản được lưu trong bộ nhớ cache cũ sau khi cập nhật, và bản sao cũ đó trong bộ nhớ cache của trình duyệt hầu như luôn là nguyên nhân; việc xóa bộ nhớ cache sẽ buộc trình duyệt phải tải lại từ đầu. Bạn đã sử dụng máy tính dùng chung hoặc máy tính công cộng và muốn xóa dấu vết cục bộ của những gì bạn đã xem. Hoặc điện thoại của bạn chỉ còn vài gigabyte dung lượng và bạn cần giải phóng dung lượng, vì bộ nhớ cache của trình duyệt có thể tự động phình to lên đến vài gigabyte. Ngoài những trường hợp đó, việc xóa bộ nhớ cache không mang lại lợi ích gì. Nó sẽ làm chậm lần truy cập tiếp theo của bạn vào mọi trang web trong khi trình duyệt xây dựng lại các bản sao của nó, và một số trình duyệt sẽ đăng xuất bạn trong quá trình này. Điều mà mọi người thường hiểu sai nhất: xóa bộ nhớ cache không xóa cookie hoặc mật khẩu đã lưu của bạn. Chúng được lưu trữ riêng biệt và vẫn còn sau khi xóa bộ nhớ cache, trừ khi bạn chủ động chọn xóa chúng.

Trình duyệt Nơi xóa bộ nhớ đệm
Chrome Cài đặt, Quyền riêng tư và bảo mật, Xóa dữ liệu duyệt web, Hình ảnh và tệp tin đã lưu trong bộ nhớ cache
Firefox Cài đặt, Quyền riêng tư và Bảo mật, Cookie và Dữ liệu Trang web, Xóa dữ liệu
Cuộc đi săn Cài đặt, Safari, Xóa lịch sử và dữ liệu trang web
Bờ rìa Cài đặt, Quyền riêng tư, Chọn những gì cần xóa

Cache, cookies và buffer: làm rõ sự nhầm lẫn

Ba từ này, thường bị nhầm lẫn, đều liên quan đến việc lưu trữ dữ liệu. Mỗi từ có một chức năng khác nhau. Bộ nhớ đệm (cache) lưu giữ bản sao của nội dung để bạn có thể truy cập nhanh hơn vào lần sau. Cookie là một ghi chú nhỏ mà trang web để lại để ghi nhớ bạn: phiên đăng nhập, cài đặt ngôn ngữ, tùy chọn đã lưu. Nó mang thông tin nhận dạng, chứ không phải nội dung. Bộ đệm (buffer) lại khác. Nó lưu trữ dữ liệu trong quá trình truyền tải, giống như vài giây video mà luồng phát tải trước khi bạn xem. Cách ngắn gọn nhất để phân biệt chúng: dữ liệu trong bộ nhớ đệm được lưu giữ để sử dụng lại, cookie ghi nhớ bạn là ai, và bộ đệm sẽ được xóa ngay lập tức khi được sử dụng.

Những điều cần nhớ về bộ nhớ đệm và cơ chế lưu vào bộ nhớ đệm.

Một khi bạn hiểu bộ nhớ đệm chỉ đơn giản là "giữ một bản sao của thứ chậm chạp gần nơi cần thiết", nó sẽ không còn giống một tính năng phần cứng nữa mà trở thành một thói quen xuyên suốt toàn bộ lĩnh vực điện toán, từ việc tải dữ liệu trong 0,7 nano giây trên CPU đến việc sao chép trang này được lưu trữ trên máy chủ biên gần thành phố của bạn. Bài học thực tiễn mà web chưa học được là: phần lớn tốc độ đó là miễn phí và hầu hết các trang web vẫn bỏ qua nó. Lần tới khi một trang web mở ra nhanh đến mức bạn không kịp chớp mắt, bạn sẽ biết chính xác bản sao nào đã giúp bạn tiết kiệm thời gian.

Bất kỳ câu hỏi?

Hãy hình dung một kho bản sao được lưu trữ ở một nơi nào đó có tốc độ cao. Khi dữ liệu được tải chậm, máy tính sẽ lưu một bản sao ở gần đó, rồi lấy nó vào lần sau thay vì phải làm lại toàn bộ công việc. CPU của bạn thực hiện việc này trong chưa đến một nano giây. Một trang web thực hiện điều đó trên khắp các châu lục. Cùng một ý tưởng, nhưng quy mô hoàn toàn khác nhau.

Thỉnh thoảng cần xóa bộ nhớ cache, nhưng không theo lịch trình cố định. Hãy xóa khi trang web bị lỗi hoặc lỗi thời, khi bạn dùng chung máy tính hoặc khi dung lượng lưu trữ hạn chế. Trong những trường hợp khác, dữ liệu được lưu trong bộ nhớ cache chính là thứ giúp các lần truy cập tiếp theo nhanh hơn. Xóa nó mà không có lý do chỉ làm chậm tốc độ truy cập của bạn.

Bộ nhớ đệm lưu giữ các bản sao của tập tin để các lần truy cập tiếp theo tải nhanh hơn. Xóa nó đi? Thường thì không. Có ba lý do chính đáng để xóa: trang web bị lỗi hoặc lỗi thời, bảo mật trên máy tính dùng chung hoặc điện thoại thiếu dung lượng. Không có lý do nào như vậy? Hãy để nguyên. Bộ nhớ đệm đang làm nhiệm vụ của nó.

Chỉ khi nào thực sự có thứ gì đó bị hỏng, mà đối với hầu hết mọi người thì điều đó xảy ra vài lần một năm. Việc thực hiện thao tác này hàng tuần là vô ích. Và khi một trang web nào đó liên tục gặp lỗi, hãy chỉ xóa dữ liệu của trang web đó thay vì xóa toàn bộ bộ nhớ cache và làm chậm tất cả các trang web khác mà bạn truy cập.

Không, theo mặc định thì không. Các tệp được lưu trong bộ nhớ cache và mật khẩu đã lưu nằm ở các kho lưu trữ riêng biệt, vì vậy việc xóa bộ nhớ cache thông thường sẽ không ảnh hưởng đến thông tin đăng nhập của bạn. Mật khẩu chỉ biến mất nếu bạn cố ý chọn ô xóa mật khẩu trong menu xóa, menu này tách biệt với tùy chọn xóa hình ảnh và tệp trong bộ nhớ cache. Hãy bỏ qua ô đó và thông tin đăng nhập của bạn sẽ được giữ nguyên.

Bộ nhớ đệm (cache) lưu trữ các bản sao của nội dung như hình ảnh, tập lệnh và phông chữ, giúp trang web tải nhanh hơn. Cookie thì khác. Chúng lưu trữ các thẻ nhỏ để nhận dạng bạn: phiên đăng nhập, cài đặt trang web của bạn. Bộ nhớ đệm giúp tăng tốc độ; cookie ghi nhớ bạn là ai. Chúng lưu trữ riêng biệt, vì vậy việc xóa một cái sẽ không ảnh hưởng đến cái còn lại.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.