Cache: định nghĩa và mọi lĩnh vực có dùng cache

Thông báo tiếp thị liên kết Ver 3.1
Thông báo tiếp thị liên kết Ver 3.2 (chỉ trên di động)

Bài viết sắp xếp các lĩnh vực dùng cache, từ phần cứng đến web, thành một cây theo cách phân loại của Wikipedia, MDN và tài liệu chính thức của WordPress. CPU, hệ điều hành, cơ sở dữ liệu và trình duyệt đều dùng chung một tên, nên “xóa cache” cũng xóa những thứ khác nhau tùy theo tầng.

Cache là nơi tạm lưu dữ liệu hay dùng hoặc sắp cần đến trong bộ lưu trữ nhanh hơn bản gốc, và khi có cùng yêu cầu thì trả lời bằng bản sao đó thay vì bản gốc.

Bài Cache (computing) trên Wikipedia tiếng Anh chia cache thành cache phần cứng như cache CPU·cache GPU và cache phần mềm như cache đĩa·web·DNS·cơ sở dữ liệu. Cây bên dưới gom cách phân loại này theo vị trí đặt cache, còn cache web theo cách phân loại private cache và shared cache của MDN.

🗂️ Các lĩnh vực dùng cache
💻 Ⅰ. Thiết bị người dùng
Cache hệ điều hànhCache đĩa · cache DNS
Cache trình duyệtPrivate cache của cache HTTP
Cache ứng dụng di độngẢnh thu nhỏ · dữ liệu phiên
🖥️ Ⅱ. Server và ứng dụng
Page cacheHTML hoàn chỉnh (WP Rocket · cache FastCGI)
OPcacheBytecode PHP
Object cacheRedis · Memcached
Cache web frameworkLaravel · Django
🌐 Ⅲ. Phân phối nội dung · mạng
CDNShared cache của cache HTTP
Cache proxyChiều xuôi · chiều ngược (Varnish)
Cache mạngCache ARP · cache DNS resolver
🗄️ Ⅳ. Cơ sở dữ liệu · lưu trữ
Cache nội bộ DBInnoDB buffer pool · Shared Buffers
Cache lưu trữBộ điều khiển đĩa · DRAM SSD
⚙️ Ⅴ. Phần cứng
Cache CPUL1 · L2 · L3 · TLB
Cache GPUTexture · dữ liệu shader
☁️ Ⅵ. Cloud · ảo hóa
Cache containerLayer Docker
Hàm serverlessWarm Start
Cache buildPhụ thuộc · kết quả CI/CD

Bạn có thể xem thứ tự cache trình duyệt·CDN·nội bộ server xử lý một yêu cầu WordPress trong bài Cache website & cache phía server: cách cache WordPress hoạt động bằng trình mô phỏng.

Ⅰ. Thiết bị người dùng

  • ↳ Client-Side Cache

Cache trên thiết bị người dùng như máy tính cá nhân và điện thoại thông minh có thể chia thành cache hệ điều hành (OS), cache trình duyệt và cache ứng dụng di động.

Cache hệ điều hành (OS)Bộ nhớ thiết bị (RAM)
Lưu gìDữ liệu đọc từ đĩa · tên miền và địa chỉ IP

Cache đĩa (page cache) giữ dữ liệu đọc từ đĩa trong bộ nhớ và do kernel hệ điều hành quản lý. Cache DNS lưu tên miền và địa chỉ IP vừa tra cứu.

Cache đĩaCache DNS
Cache trình duyệtBộ nhớ trình duyệt
Lưu gìHTML · CSS · JS · hình ảnh · phông chữ

Khi yêu cầu lại cùng tài nguyên, trình duyệt không đi đến server hoặc chỉ kiểm tra xem có thay đổi không. Dùng Service Worker (Cache API) thì có thể mở web app bằng tài nguyên đã lưu ngay cả khi ngoại tuyến.

private cacheService Worker
Cache ứng dụng di độngBộ nhớ của ứng dụng
Lưu gìẢnh thu nhỏ · một phần nội dung · trạng thái đăng nhập

Ứng dụng xử lý nội dung lớn lưu dữ liệu đã nhận và danh sách xem gần đây trên thiết bị để không phải tải lại cùng dữ liệu.

YouTubeInstagram

Ⅱ. Cache server và ứng dụng

  • ↳ Server-Side Cache

Cache phía server là cache gắn vào quá trình tạo trang sau khi yêu cầu đến server. Tài liệu chính thức của WordPress chia nó thành plugin cache (cache trang), object cache và cache server (cache opcode như OPcache).

Page cacheĐĩa · bộ nhớ server
Lưu gìTrang HTML hoàn chỉnh

Với yêu cầu cùng một trang, bản sao đã lưu được gửi đi mà không chạy PHP. Có plugin cache và cache của web server.

WP RocketCache FastCGI của NginxLiteSpeed Cache
OPcacheBộ nhớ server
Lưu gìBytecode PHP đã biên dịch

Bỏ qua biên dịch khi chạy lại cùng một file. Có sẵn mặc định từ PHP 5.5.

Cache opcode
Object cacheBộ nhớ server
Lưu gìKết quả truy vấn · dữ liệu phiên

Lưu dữ liệu hay dùng vào kho trên bộ nhớ để không lặp lại cùng truy vấn.

RedisMemcached
Cache web frameworkỨng dụng
Lưu gìTemplate · route · kết quả truy vấn

Web framework lưu template đã render và kết quả truy vấn trong cache riêng.

LaravelDjango

Ⅲ. Cache phân phối nội dung / hạ tầng mạng

Cache của hạ tầng mạng trả lời bằng bản sao ở giữa khách truy cập và server gốc, giảm khoảng cách vật lý và tải cho server gốc. Trong tiêu chuẩn cache HTTP, đây là shared cache mà nhiều khách cùng dùng.

CDNServer edge
Lưu gìFile tĩnh · trang

Phân phối từ server gần khách nhất trong các server đặt khắp thế giới. Cấu trúc và lợi ích được trình bày trong CDN là gì? Lý do dùng CDN và 5 lợi ích (bài viết riêng).

CloudflareAkamaiFastlyQUIC.cloud
Cache proxyProxy server
Lưu gìPhản hồi của server

Proxy chiều xuôi lưu phản hồi ở phía máy khách như mạng doanh nghiệp, còn proxy chiều ngược lưu ở phía trước server.

Varnish CacheReverse proxy Nginx
Cache mạngThiết bị mạng · DNS resolver
Lưu gìÁnh xạ IP–MAC · kết quả tra cứu DNS

Thiết bị mạng lưu trong cache ARP, còn DNS resolver của nhà mạng và công cộng lưu kết quả tra cứu trong thời gian TTL của bản ghi.

Cache ARPCache DNS resolver

Ⅳ. Cache cơ sở dữ liệu và hệ thống lưu trữ

Vì I/O đĩa chậm, cơ sở dữ liệu và thiết bị lưu trữ nạp dữ liệu hay đọc lên bộ nhớ để dùng.

Cache nội bộ cơ sở dữ liệuBộ nhớ server DB
Lưu gìDữ liệu hay đọc · chỉ mục

Giữ dữ liệu hay đọc và chỉ mục trong bộ nhớ. Query cache của MySQL đã bị gỡ ở bản 8.0; MariaDB vẫn còn nhưng mặc định tắt.

InnoDB buffer poolPostgreSQL Shared BuffersMongoDB WiredTiger
Cache lưu trữBộ nhớ bên trong thiết bị lưu trữ
Lưu gìDữ liệu đọc · ghi gần đây

Bộ nhớ tích hợp trong bộ điều khiển ổ cứng và DRAM bên trong SSD tạm lưu dữ liệu để giảm độ trễ I/O.

Cache bộ điều khiển đĩaSSD · NVMe DRAM

Ⅴ. Cache cấp phần cứng

Cache phần cứng là bộ nhớ tốc độ cao nằm trong CPU và GPU, xử lý dữ liệu nhanh hơn bộ nhớ chính (RAM).

Cache CPUBên trong bộ xử lý
Lưu gìLệnh · dữ liệu · kết quả dịch địa chỉ

L1 có riêng ở mỗi core và chia thành cache lệnh và cache dữ liệu, còn L3 được tất cả core dùng chung. Bộ quản lý bộ nhớ (MMU) lưu kết quả chuyển địa chỉ ảo sang địa chỉ vật lý vào TLB.

L1L2L3TLB
Cache GPUBên trong bộ xử lý đồ họa
Lưu gìTexture · lệnh shader · kết quả trung gian

Tăng hiệu suất xử lý của GPU trong game, đồ họa 3D và tính toán machine learning.

Ⅵ. Cache môi trường cloud / ảo hóa

Trong môi trường cloud và ảo hóa, image container, môi trường chạy hàm và kết quả build được dùng lại để rút ngắn thời gian triển khai và chạy.

Cache containerServer build · registry
Lưu gìLayer image

Image Docker gồm nhiều layer, và layer không thay đổi sẽ không bị build hay tải lại.

Docker
Hàm serverlessMôi trường chạy trên cloud
Lưu gìMôi trường chạy

Giữ lại môi trường chạy của lần gọi đã xong trong một thời gian rồi dùng lại cho lần gọi tiếp theo, giảm thời gian khởi tạo (Cold Start) (Warm Start).

AWS LambdaGoogle Cloud Functions
Cache buildKho cache CI
Lưu gìThư viện phụ thuộc · kết quả biên dịch

Rút ngắn thời gian build lặp lại.

GitHub ActionsGitLab CI

🔢 FAQ & nội dung đề xuất

Không. Xóa cache trình duyệt chỉ xóa bản sao lưu trên thiết bị của khách. Cache trang trên server và bản sao trên CDN do người quản lý website xóa qua plugin cache hoặc màn hình quản lý CDN.

Yêu cầu đầu tiên ngay sau khi xóa phải đi đến tận bản gốc nên phản hồi chậm hơn bình thường. Khi yêu cầu đó tạo lại bản sao, các yêu cầu sau trở lại tốc độ cũ, và [Preload] của WP Rocket tạo sẵn bản sao sau khi xóa.

Trên Windows, dung lượng cache L1·L2·L3 hiển thị ở cuối màn hình [Performance] → [CPU] trong Task Manager. Trên Linux, có thể xem cùng giá trị trong kết quả lệnh [lscpu].

💾 Bài viết liên quan đến cache 10 bài viết
🗂️ Cache
📋 Cache: định nghĩa và mọi lĩnh vực 📄 Cache website & cache phía server
📋 Hướng dẫn cài đặt WP Rocket 📝 Zend OPcache 📝 Cài đặt Redis Cache
📝 CDN là gì? 📝 Varnish Cache
📋 Kiểm tra tốc độ WP Rocket 📝 Ví dụ cải thiện tốc độ 📝 Plugin cache · tối ưu

ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 1   +   8   =