6 cấp độ cache trong WordPress mà bạn cần biết

bởi Nguyễn Đức Anh
các cấp độ cache

Nếu bạn ham tìm hiểu về tăng tốc WordPress giống như tôi, bạn chắc hẳn đã nghe nói đến thuật ngữ “caching”. Nhưng “caching / cache” là một thuật ngữ chung chung. Trong WordPress có đến 6 cấp độ caching.

các cấp độ cache

1. Cache kiểu Opcode

Mã PHP được viết dưới dạng thân thiện với con người. Nhưng để máy tính hiểu được mã, nó phải được chuyển đổi thành mã máy (machine code). Theo mặc định, mỗi yêu cầu đến máy chủ cần phải biên dịch thành mã máy.

Opcode lưu giữ bản cache của các mã máy đó trong bộ nhớ, vì thế những yêu cầu tiếp theo, chuyển đổi đó không cần thiết nữa qua đó giúp tăng tốc. 

PHP v5.5 và các phiên bản cao hơn được đóng gói sẵn bộ đệm Opcode. Liên hệ với nhà cung cấp hosting của bạn để xác minh điều này.

lược đồ opcache

2. Object Cache

MySQL là phương tiện dễ làm tiêu hao tài nguyên.  Mỗi lần bạn mở một trang/bài viết trong WordPress, nó sẽ thực thi tối thiểu 27 truy vấn MySQL. Và 27 chỉ là số lượng truy vấn mặc định mà thôi, nó còn có thể lên đến 50 hoặc 100 tùy thuộc vào theme (giao diện) của bạn và số lượng các plugin được cài đặt. Mỗi truy vấn này cần vài mili giây tùy thuộc vào kích cỡ của truy vấn SQL và dữ liệu trong database của bạn.

Hầu hết thời gian, các kết quả truy vấn SQL có thể được cache trên đĩa (disk) hoặc bộ nhớ RAM, cái này được gọi là object caching.  Do đó chúng ta đã tăng tốc truy vấn bằng cách giảm tải công việc từ MySQL và cũng sử dụng ít tài nguyên máy chủ hơn.

RedisMemcached là hai phần mềm tương tự nhau giúp cache những kết quả này trong bộ nhớ. Tốc độ đọc và viết của chúng nhanh hơn nhiều so với việc đọc và ghi từ MySQL/MariaDB.

3. Cache toàn trang

Nếu bạn có bài đăng blog hoặc các sản phẩm woocommerce, nội dung của bạn không thay đổi thường xuyên. Vì thế lý tưởng là tạo ra phiên bản HTML của trang thay vì tạo nó từ PHP cho mỗi yêu cầu.

Đây là điều mà caching toàn trang thực hiện. Nó tạo trang hoàn chỉnh lưu trữ dưới dạng HTML trên đĩa cứng (disk). Các yêu cầu đến trang được phục vụ trực tiếp từ file HTML.

Các plugin cache như WP RocketSwift Performance tạo ra các trang HTML được tối ưu tốt từ máy chủ của họ và lưu trữ nó trên máy chủ của bạn.

4. Gia tốc HTTP

Đây là cấp độ tiếp theo của caching toàn trang. Việc tạo trang trong “cache toàn trang” nói trong mục 3 được lưu trữ trong ổ cứng. Đọc và ghi từ ổ cứng (ngay cả từ ổ SSD) vẫn là chậm khi so sánh với việc đọc từ bộ nhớ trong (RAM).

Như bạn thấy ở phần trên, Redis và Memcached thực sự làm việc tốt trong kiểu caching bộ nhớ trong (RAM). Dù vậy thì Varnish được thiết kế riêng cho việc caching các yêu cầu HTTP và cung cấp nhiều tính năng khác hay hơn Redis. FastCGI với Nginx cũng có thể được tinh chỉnh để đạt được cùng kết quả trong caching bộ nhớ trong.

5. CDN

CDN (Content Delivry Network) là một mạng lưới máy chủ phân tán khắp toàn cầu. Bạn có thể lưu trữ bản sao chép các file tĩnh (css, js, ảnh, vân vân) trong các máy chủ này. Vì thế khi ai đó ghé thăm trang web của bạn, các file tĩnh này sẽ được phân phối từ máy chủ gần nhất trong hệ thống CDN của bạn.

Nếu website của bạn chủ yếu là nội dung tĩnh, bạn cũng có thể cache trang HTML trong CDN.

6. Cache phía trình duyệt

Trong khi gửi phản hồi HTTP, bạn nói với trình duyệt có nên lưu lại phản hồi hay không. Một khi nó được cache, với các yêu cầu tiếp theo, các phản hồi này sẽ lấy từ bộ nhớ đệm của trình duyệt. Bạn cũng có thể nói cho trình duyệt biết các file cache nên được lưu giữ trong thời gian bao lâu.

Ý tưởng tốt là cache các file tĩnh như là CSS, JS, ảnh, font trong trình duyệt nếu chúng không được cập nhật thường xuyên.

Vậy thì tôi nên sử dụng kiểu Caching nào?

Opcode caching được bật mặc định trong hầu hết các công ty hosting chất lượng. Caching phía trình duyệt và CDN caching rất dễ để triển khai và nó được khuyến khích trên mọi kiểu website.

Nếu trang web của bạn không có nhiều nội dung động, bạn chắc chắn nên triển khai caching toàn trang. Gia tốc HTTP cũng có thể thúc đẩy tốc độ và xử lý được lưu lượng truy cập cao trong trường hợp này.

Nhưng nếu trang web của bạn có nhiều nội dung động, caching toàn trang và gia tốc HTTP caching có thể không nên triển khai trên mọi trang. Trong trường hợp đó tôi khuyến khích sử dụng cache truy vấn sử dụng kiểu caching Object.

Comment bên dưới nếu bạn có bất cứ câu hỏi hoặc phản hồi nào nhé.

(Được dịch từ bài viết 6 Levels of Caching in WordPress You Need to Know của tác giả Gijo Varghese, website WPSpeedMatters)

0 bình luận

Khu vực bình luận

avatar