Tất tần tật về Cache: khái niệm, phân loại, các thuật toán…

0
394

[CPP] Trình duyệt (browser) trên máy tính (desktop, laptop), máy tính bảng (tablet) và điện thoại (smartphone) sau một quá trình sử dụng sẽ có hiện tượng lag, đơ, tải chậm, gây ra nhiều phiền toái cho người dùng. Một phần lớn nguyên nhân là do Cache. Hãy tăng tốc hiệu suất hoạt động của browser bằng việc xóa dữ liệu duyệt web, xóa cache, xóa cookies và lịch sử của trình duyệt.


Phân biệt cache và cookies:

  • Bộ nhớ cookies là các tập tin được tạo bởi trang web truy cập để lưu trữ thông tin duyệt web như username hay mật khẩu. Khi xóa cookies sẽ giải quyết được vấn đề đăng nhập, cũng như bảo mật thông tin người dùng.
  • Bộ nhớ cache sẽ lưu trữ dữ liệu khi duyệt web như hình ảnh, âm thanh, những nội dung tải xuống… Việc xóa cache sẽ giải quyết vấn đề load trang web bị chậm, nội dung không chạy như khi chơi game,…

Trong phạm vi bài này, chúng tôi tập trung chủ yếu vào cache.


Cache là gì? Caching là gì?

Cache hay bộ nhớ đệm là phần cứng hoặc phần mềm được tích hợp sẵn với tác dụng lưu trữ dữ liệu tạm thời trong môi trường máy tính.

Cachinglưu trữ dữ liệu vào cache dưới dạng mã nhị phân. Nó sẽ giúp người dùng rút ngắn thời gian truy cập, giảm độ trễ và thực hiện các thao tác trên ứng dụng/website/hệ điều hành thuận tiện, nhanh chóng hơn.

Hầu hết các workload của ứng dụng đều sẽ phụ thuộc vào tốc độ đầu vào (input)/đầu ra (output). Cache thường được dùng để cải thiện hiệu suất cho các ứng dụng, website có lượt truy cập cao.

Phân loại cache?

Có bao nhiêu loại cache?

Cache được chia thành 3 loại chính:

Write-back Cache

Write-back cache là bộ nhớ đệm ghi lại, cho phép chuyển toàn bộ các hoạt động sang bộ nhớ cache.

  • Ưu điểm: Tốc độ truy cập và hiệu năng hoạt động của website hay ứng dụng nhanh hơn, thông qua việc dữ liệu đã lưu trữ trên bộ nhớ Cache.
  • Nhược điểm: Cơ chế hoạt động của bộ nhớ Cache quyết định đến độ bảo mật thông tin. Vì thế, đôi khi sẽ xảy ra trường hợp mất dữ liệu trước khi nó được lưu trong bộ nhớ chính.

Write-through Cache

Write-through cache là kỹ thuật cho phép ghi đè dữ liệu lên bộ nhớ Cache và Storage

  • Ưu điểm: Dữ liệu luôn được lưu trữ tạm thời nên việc xuất/đọc dữ liệu rất nhanh chóng, tiện lợi.
  • Nhược điểm: Thời gian lưu trữ khá dài do hoạt động ghi chỉ hoàn tất khi tất cả dữ liệu đã ghi trên bộ nhớ Cache và bộ nhớ Primary Storage.

Write-around Cache

Write-around cache có khả năng ghi lại các hoạt động trực tiếp vào bộ nhớ, hoàn toàn bỏ qua cache

  • Ưu điểm: Giúp bộ nhớ đệm cache không bị quá tải khi có quá nhiều bản ghi I/O (Input/Output) được thực hiện cùng lúc.
  • Nhược điểm: Dữ liệu sẽ không được lưu trữ, trừ khi nó được truy xuất từ bộ nhớ. Điều này khiến cho hoạt động truy cập lúc đầu sẽ tương đối chậm.

Các thuật toán điều khiển cache

Có rất nhiều thuật toán Cache, sau đây là các thuật toán cơ bản nhất:

  • Least Frequently Used (LFU): theo dõi tần suất truy cập một dữ liệu. Các dữ liệu có số lần truy cập thấp nhất được loại bỏ đầu tiên.
  • Least Recently Used (LRU): lưu trữ các dữ liệu được truy cập gần đây gần đầu bộ đệm. Khi bộ đệm đạt đến giới hạn của nó, các liệu được truy cập gần đây nhất sẽ bị xóa.
  • Most Recently Used (MRU): loại bỏ các dữ liệu truy cập gần đây nhất đầu tiên. Cách tiếp cận này là tốt nhất khi các data cũ có nhiều khả năng được sử dụng.

Các khái niệm liên quan đến cache

Để hiểu rõ hơn về Cache, cùng tìm hiểu chi tiết về các khái niệm:

Cache Memory – cache bộ nhớ

Cache Memory thường được gắn trực tiếp trên CPU. Nó có khả năng lưu trữ lệnh/chức năng thường được yêu cầu bởi các chương trình đang chạy, giúp bộ vi xử lý máy tính truy cập dữ liệu nhanh hơn so với RAM thông thường. Nếu xét về khả năng truy xuất thì cache memory có tốc độ rất nhanh (hơn hẳn disk cache và cả RAM cache) vì vị trí của nó gần với CPU nhất.

Cache Server – cache máy chủ

Thông thường, các máy chủ kết nối mạng chuyên dụng (dedicated network server) hoặc dịch vụ hoạt động như máy chủ (service acting as server) sẽ lưu trữ dữ liệu trang web và các nội dung internet một cách cục bộ. Hình thức lưu trữ này gọi là Cache Server hay Cache Proxy.

Disk Cache – bộ nhớ tạm trên đĩa

Disk Cache có tính năng ghi nhớ những nội dung đã được đọc tại thời điểm mới nhất, cùng các dữ liệu liền kề có khả năng truy cập lại. Ngoài ra, có nhiều loại Disk cache còn lưu dữ liệu dựa vào tần suất đọc. Trong đó, các khối dữ liệu truy cập thường xuyên sẽ được ghi nhớ tự động trên Cache. Nhờ tính năng hữu ích này của Disk cache nên tốc độ đọc, ghi dữ liệu lên ổ cứng được cải thiện khá nhiều.

Flash Cache – thiết bị nhớ flash

Flash Cache là thiết bị lưu trữ tạm thời dữ liệu trên chip bộ nhớ NAND (thường lưu trữ dưới dạng SSD). Nó có khả năng truy xuất dữ liệu với tốc độ cao hơn so với bộ nhớ cache trên ổ đĩa truyền thống HDD.

Web Cache – bộ nhớ đệm trên website

Đây là bộ nhớ đệm của website. Nó có tính năng lưu trữ tạm những nội dung tĩnh được truy cập thường xuyên. Nhờ cơ chế này mà Web cache sẽ giảm tối đa băng thông tiêu thụ, độ trễ, đồng thời, tăng tốc độ truy cập website. Từ đó, tài nguyên của website được giải phóng, còn hiệu suất người dùng cải thiện tốt nhất.

Web cache hoạt động cực kỳ đơn giản. Thông thường, dữ liệu sẽ lưu trong bộ nhớ của hệ thống (ví dụ hosting). Còn với Web cache, dữ liệu được ghi nhớ, rồi sau đó truy xuất trực tiếp khi có yêu cầu của người dùng. Tất nhiên, dữ liệu cũng không cần phải đi qua bộ nhớ chính.


Tại sao web cache lại quan trọng?

Bộ nhớ đệm giúp tăng tốc độ Load Website đáng kể. Khi được sử dụng đúng cách, nó sẽ không chỉ giúp thời gian tải nhanh hơn đáng kể mà còn giảm tải trên máy chủ của bạn.

Để hiểu rõ hơn, bạn hãy xem cách một trang được Load. Giả sử bạn sở hữu một Blog có bật bộ nhớ đệm. Lần đầu tiên ai đó truy cập trang chủ của bạn, họ truy cập trang theo cách bình thường. Máy chủ sẽ nhận yêu cầu, xử lý và kết quả trang Web hiển thị sẽ được chuyển thành tệp HTML và được gửi đến trình duyệt Web của khách truy cập. Vì bộ nhớ đệm được bật, máy chủ sẽ lưu trữ tệp HTML này – thường nằm trong RAM, tốc độ này cực kỳ nhanh.

Lần tới khi bạn hoặc bất kỳ ai khác xem trang chủ, máy chủ không cần thực hiện quá trình xử lý và chuyển đổi sang HTML. Thay vào đó, nó chỉ gửi tệp HTML đã được chuẩn bị sẵn đến trình duyệt. Điều này giúp khách truy cập không phải đợi lâu để Load trang. Đồng thời, trang Web cũng sử dụng ít băng thông hơn.

Lợi ích của Web Caching:

  • Giảm băng thông: Web caching loại bỏ sự lặp lại của các hoạt động mạng trong quá trình máy khách gửi yêu cầu và máy chủ phản hồi (request – response). Nhờ thế, lượng băng thông bị máy khách chiếm dụng đã được giảm đáng kể.
  • Cải thiện tốc độ website: Nhờ lưu trữ dữ liệu Cache nên quá trình truy xuất các yêu cầu diễn ra gần như ngay tức thời. Điều này giúp tăng hiệu suất vận hành của website.
  • Giảm gánh nặng cho máy chủ: Vì bộ nhớ đệm đã đảm nhận một phần dữ liệu nên nó có thể giúp máy chủ xử lý các yêu cầu gửi đến.
  • Đáp ứng lượng truy cập lớn: Hầu hết các gói hosting có hỗ trợ Cache đêu luôn đáp ứng tốt nhất lưu lượng truy cập lớn. Thực tế, nó có khả năng chịu tải cao gấp 3-4 lần so với hosting không hỗ trợ Cache.

Các hình thức caching

Có 4 hình thức caching cơ bản sau:

HTML Caching

Là hình thức đơn giản, phổ biến nhất và được phần lớn các website áp dụng. Nội dung của website khi đã gửi đến người truy cập sẽ được lưu trữ tạm bằng file HTML tĩnh, sau đó cất giữ ở ổ cứng máy tính.

Opcode Caching

Vì PHP là ngôn ngữ thông dịch nên các website được lập trình bằng PHP thường có tốc độ chậm hơn các mã nguồn khác. Vì vậy, Opcode caching được phát triển nhằm mục đích tăng hiệu suất phân tích, biên dịch cho những website PHP.

Code được biên dịch sẽ lưu trữ tại RAM hay ổ đĩa cứng để phục vụ việc tái sử dụng

Object Caching

Object caching được dùng để hỗ trợ cho website WordPress.. Nó được thực hiện bằng câu lệnh wp_cache. Hình thức Caching này giúp lưu trữ Query, Session, và những mục dữ liệu dùng code PHP.

Database Caching

Lưu các truy vấn dữ liệu trên bộ nhớ RAM. Sau khi được lưu trữ, dữ liệu sẽ phản hồi kết quả cho người truy cập ở những lần truy vấn sau đó.

Cache được lưu ở đâu?

Vị trí lưu cache

Dữ liệu của Cache được lưu trên máy chủ, giữa máy chủ web và máy khách. Cụ thể, có 3 vị trí sau:

Browser Cache – cache trình duyệt

Cache trình duyệt, hay browser cache là một bộ lưu trữ tạm thời của browser chứa files của trang web mà bạn đã truy cập vào bộ nhớ máy tính của bạn. Mục đích của nó là đảm bảo bạn sẽ không phải tải lại các file đó trong lần thứ 2 truy cập, vì nó vốn dĩ đã có sẵn trên máy tính của bạn rồi.

Ví dụ như khi máy tính caching lại các yếu tố như HTML, CSS, JS và hình ảnh, các trình duyệt sẽ giảm thiểu thời gian load, cải thiện đáng kể hiệu năng sử dụng của server. Như thế thì bạn tha hồ lướt web vi vu với trải nghiệm êm ru và nhanh chóng.

Proxy Cache

Nếu như Browser cache là ứng dụng lưu trữ cá nhân hóa thì Proxy cache lại đáp ứng cho hàng trăm người truy cập cùng nội dung. Proxy cache do Tổ chức ISPs cài đặt để giảm băng thông.

Cách thức lưu trữ này giúp tận dụng tối đa tài nguyên phần cứng. Khi sử dụng Proxy cache, bạn dễ dàng Cache dữ liệu bằng cách lấy một máy chủ bất kỳ nằm giữa máy khách và máy chủ web.

Gateway cache (reverse proxy cache)

Khác với proxy cache, gateway cache được đặt gần với origin server với mục đích giúp giảm tải lên server. Gateway cache được triển khai theo mô hình máy chủ 2 lớp. Trong đó, 1 lớp có vai trò là front-end (xử lý các file tĩnh như html, css,…), còn 1 lớp giữ nhiệm vụ back-end (xử lý các nội dung động – dữ liệu).

Gateway cache được cài đặt bởi quản trị viên nên chúng ta có thể kiểm soát và điều khiển được nó, hoàn toàn ngược lại với browser cache và proxy cache.

Cache hoạt động như thế nào?

Cách thức hoạt động của cache

Khi cache client cần truy cập data, việc đầu tiên là check cache. Khi request data tìm thấy dữ liệu cần thiết trong Cache, nó được gọi là Cache hit. Tỉ lệ của kết quả tìm kiếm cache hit được biết đến như là cache hit rate hay ratio.

Nếu việc tìm kiếm data không thành công, nó gọi là Cache miss – từ đây dữ liệu sẽ được kéo từ bộ nhớ chính sang bộ nhớ cache. Việc giữ dữ liệu nào cần, hay xoá khỏi bộ nhớ đệm để nhường chỗ cho dữ liệu mới sẽ tùy thuộc vào thuật toán mà system sử dụng.

Web browsers như là Internet Explorer, Firefox, Safari và Chrome, sử dụng browser cache để tăng hiệu suất các trang web thường xuyên truy nhập.

Khi bạn truy cập một webpage, hệ thống sẽ lưu trữ các file cần thiết vào browser cache trong máy tính. Khi bạn quay lại trang web đó, browser sẽ chỉ cần lấy các thông tin quan trọng và update các thông tin cần thiết mà thôi, và không cần tải lại toàn bộ các nội dung từ web server – điều này làm cải thiện hiệu suất web. Đó được gọi là đọc cache. Trình duyệt có thể đọc dữ liệu từ browser cache nhanh hơn nhiều so với việc đọc lại các tệp từ trang web.

Ưu nhược điểm của cache

Ưu điểm của cache

  • Nhanh hơn bộ nhớ chính vì nó nằm trên chính chip xử lý. Tốc độ của nó tương đương với các thanh ghi bộ xử lý và do đó dữ liệu thường xuyên được yêu cầu được lưu trữ trong bộ nhớ đệm.
  • Thời gian truy cập bộ nhớ ít hơn đáng kể cho bộ nhớ cache vì nó khá nhanh. Điều này dẫn đến việc thực hiện nhanh hơn bất kỳ quy trình nào.
  • Bộ nhớ cache có thể lưu trữ dữ liệu tạm thời miễn là thường xuyên được yêu cầu. Sau khi việc sử dụng bất kỳ dữ liệu nào kết thúc, nó có thể được xóa khỏi bộ đệm và được thay thế bằng dữ liệu mới từ bộ nhớ chính.

Nhược điểm của cache

  • Vì bộ nhớ cache khá nhanh, nên nó cực kỳ hữu ích trong bất kỳ hệ thống máy tính nào. Tuy nhiên, nó cũng khá đắt và vì vậy được sử dụng một cách thận trọng.
  • Bộ nhớ cache là bộ nhớ đắt tiền. Ngoài ra, nó được đặt trực tiếp trên chip xử lý. Vì những lý do này, nó có dung lượng hạn chế. Và nhỏ hơn nhiều so với bộ nhớ chính.

Có nên xóa cache không?

Việc xóa bộ nhớ đệm giúp đặt lại ứng dụng về trạng thái mặc định khi có khó khăn trong quá trình sử dụng hoặc ứng dụng bị lỗi. bạn nên xóa Cache là để tiết kiệm không gian lưu trữ. Một số ứng dụng tốn đến hàng GB để lưu trữ dữ liệu, Khi không còn dùng đến bạn nên xóa đi để giải phóng dung lượng cho bộ nhớ máy. Xóa cache cũng giúp bạn giải quyết các vấn đề sau:

  • Bạn cần bảo vệ sự riêng tư, phải xóa các File có chứa thông tin cá nhân.
  • Ứng dụng bị lỗi, hoạt động sai cách do các tập tin Cache của ứng dụng bị hỏng.
  • Bạn không muốn xóa ảnh, Video, ảnh và ứng dụng trên điện thoại nhưng lại sắp hết dung lượng lưu trữ trên điện thoại.

Xóa Cache sẽ không gây ra bất kỳ trở ngại, lỗi gì nên các bạn cứ yên tâm nhé.

>> Xem thêm bài viết: Cách xóa các loại cache

Cách khôi phục cache đã xóa

Nếu bạn có đăng nhập tài khoản Google trên trình duyệt của mình thì đừng lo lắng, mọi lịch sử duyệt web, thông tin cá nhân lưu trữ đều được đồng bộ trên Google, đặc biệt là Google History. Và nếu muốn xem lại lịch sử duyệt web trước đó đã lỡ xóa, hãy thực hiện theo hướng dẫn sau:

  • Bước 1: Truy cập vào đường dẫn google.com/history -> Đăng nhập vào tài khoản Google (tài khoản này phải cùng với tài khoản đã đăng nhập trên trình duyệt).
  • Bước 2: Chọn Lọc theo ngày và sản phẩm để lọc ra là bạn đã truy cập vào trang web nào, trong thời gian nào
  • Bước 3: Chọn ngày giờ, các sản phẩm của Google để lọc chính xác lịch sử duyệt web của bạn, sau đó nhấn Áp dụng.

Sau khi lọc thì sẽ hiện ra lịch sử duyệt web mà bạn đã truy cập.

Làm sao để các trang web không lưu lại trên bộ nhớ cache?

Thay vì mỗi lần truy cập vào trang web xong bạn lại phải nhọc công xóa bộ nhớ cache đi, thì chúng ta có một giải pháp hữu ích “nhanh-gọn-lẹ” và an toàn hơn, chẳng hạn như sử dụng chế độ duyệt web ẩn danh với tổ hợp phím CTRL + SHIFT + N trên Google Chrome chẳng hạn (các trình duyệt khác cũng có chế độ tương tự). Khi bạn duyệt web ở chế độ ẩn danh, không có bất kỳ dữ liệu hay lịch sử duyệt web nào được lưu lại trên máy tính.


Cache với RAM:

Để giảm độ trễ thời gian phản hồi, RAMCache Memory đều đặt dữ liệu gần Processor. Bộ nhớ đệm của RAM thường sẽ bao gồm bộ nhớ vĩnh viễn. Chúng được nhúng trên bo mạch chủ, các mô-đun bộ nhớ có thể được cài đặt trong các vị trí đính kèm hoặc khe cắm chuyên dụng hoặc.

Cache Memory thường là một phần của CPU. Hoặc nó có thể là một phần của phức hợp CPU và Chipset liền kề nơi bộ nhớ. Chúng được sử dụng để chứa các dữ liệu thường xuyên truy cập.

Bộ nhớ đệm của CPU chỉ cần vài Nano giây để đáp ứng yêu cầu của CPU. Tốc độ này nhanh hơn từ 10 – 100 lần so với RAM. Tuy nhiên, Cache RAM Memory cung cấp I/O với tốc độ tính bằng Mili giây và có tốc độ nhanh hơn thời gian đáp ứng so với các thiết bị nhớ cổ điển.

Cách tăng Cache Memory:

Bộ nhớ Cache sẽ được nhúng vào một con Chip tại bo mạch hệ thống (System Board) hoặc đưa vào CPU. Bình thường, tôi tăng bộ nhớ Cache bằng cách thực hiện cài đặt một bo mạch hệ thống ở thế hệ tiếp theo, đồng thời là một CPU Next-Gen tương ứng.

Bạn có thể dễ dàng ứng dụng các khe trống của một số bo mạch ở hệ thống cũ để giúp việc tăng thêm dung lượng Cache Memory. Nhưng trong thực tế, các khe trống này hầu như không còn nữa. Do đó, có thể nói việc tăng Cache Memory không thực sự dễ dàng.

Cache với Buffer:

Buffer cho phép mỗi quá trình hoặc thiết bị hoạt động không bị trì hoãn bởi các thiết bị khác. Đây là khu vực dùng chung nơi các chương trình hoặc thiết bị phần cứng hoạt động với các ưu tiên khác nhau ở tốc độ khác nhau có thể tạm thời lưu trữ dữ liệu.

Cả Cache và Buffer đều sử dụng các thuật toán để kiểm soát sự di chuyển của dữ liệu vào và ra khỏi khu vực giữ dữ liệu. Chúng cũng cung cấp vị trí tạm thời cho dữ liệu.

Tuy nhiên, sự khác biệt mà tôi muốn lưu ý với bạn đó là Buffer giữ dữ liệu tạm thời nhằm cho phép các quy trình và thiết bị hoạt động tách biệt với nhau. Còn Cache giữ dữ liệu để tăng tốc quá trình và hoạt động.


Như vậy là chúng ta vừa tìm hiểu xong từ A-Z thông tin về cache. Mong rằng qua bài viết này, các bạn có thể hiểu rõ hơn về cache và ứng dụng của nó!

5/5 - (2 bình chọn)

BÌNH LUẬN

Vui lòng nhập bình luận của bạn!
Vui lòng nhập tên của bạn ở đây