Ra mắt plugin APCu Object Cache độc quyền dành cho khách hàng sử dụng WordPress Hosting.
Sau một thời gian nghiên cứu và phát triển, cuối cùng thì WP Căn bản đã chính thức hoàn thiện plugin WPCB APCu Cache Manager. Nhiệm vụ của plugin này là cache các truy vấn database lên RAM, giúp website WordPress của bạn vận hành mượt mà hơn, ít tốn tài nguyên hơn (giảm tải CPU, RAM, Entry Processes, Number of Processes… rõ rệt). Nó đặc biệt phù hợp cho các website có mã nguồn nặng, lượng truy cập cao. Chúng tôi đã thử nghiệm nó trên nhiều website và mang lại hiệu quả rất tích cực. WPCB APCu Cache Manager sẽ là bổ trợ tuyệt vời cho plugin LiteSpeed Cache (cache HTML) và CloudFlare CDN (cache hình ảnh, JS, CSS…), tạo thành bộ ba hoàn hảo giúp tối ưu website của bạn. Vậy thì APCu Object Cache là gì? WPCB APCu Cache Manager vượt trội ra sao? Hãy dành vài phút để cùng WP Căn bản tìm hiểu ngay sau đây.
Tham khảo thêm:
- Hướng dẫn thiết lập Object Cache trên plugin LiteSpeed Cache
- Hướng dẫn sử dụng OpCode Cache với plugin LiteSpeed Cache
APCu Object Cache là gì?
APCu là viết tắt của APC User Cache. Để hiểu rõ hơn, chúng ta cần biết một chút về lịch sử của nó:
1. APC (Alternative PHP Cache): ban đầu, APC là một phần mở rộng (extension) rất phổ biến cho PHP. Nó cung cấp hai chức năng chính:
- Opcode Cache: lưu trữ mã PHP đã được biên dịch trước (bytecode) vào bộ nhớ. Điều này giúp PHP không phải biên dịch lại mã nguồn mỗi lần yêu cầu, tăng tốc độ thực thi đáng kể.
- User Data Cache (User Cache): cung cấp một kho lưu trữ key-value trong bộ nhớ chia sẻ (shared memory) để các script PHP có thể lưu trữ và truy xuất dữ liệu tùy ý (ví dụ: kết quả truy vấn cơ sở dữ liệu, các đối tượng đã tính toán).
2. Sự thay đổi trong PHP: kể từ phiên bản PHP 5.5, chức năng Opcode Cache đã được tích hợp trực tiếp vào lõi PHP dưới tên gọi OPcache. OPcache trở thành giải pháp opcode cache chính thức và được khuyến nghị.
3. Sự ra đời của APCu: do OPcache đã đảm nhiệm phần opcode caching, phần User Data Cache của APC cũ được tách ra thành một phần mở rộng riêng biệt và được gọi là APCu.
Vì vậy, APCu chính là:
- Một phần mở rộng (extension) của PHP.
- Cung cấp cơ chế lưu trữ key-value trong bộ nhớ chia sẻ (shared memory) trên cùng một máy chủ.
- Cho phép các tiến trình PHP khác nhau trên cùng server chia sẻ và truy cập dữ liệu được lưu trong cache một cách rất nhanh chóng, vì nó bỏ qua độ trễ của mạng và truy cập trực tiếp vào RAM.
- Dữ liệu lưu trong APCu là không bền bỉ (volatile), nghĩa là nó sẽ bị mất khi máy chủ hoặc dịch vụ web (như Apache, Nginx, PHP-FPM) được khởi động lại.
APCu được dùng để thay thế hệ thống object cache mặc định của WordPress. Thay vì lưu các đối tượng vào bộ nhớ của tiến trình PHP hoặc dùng cơ sở dữ liệu, WordPress sẽ lưu chúng vào bộ nhớ chia sẻ do APCu quản lý, giúp tăng tốc độ truy xuất dữ liệu và giảm tải cho cơ sở dữ liệu, đặc biệt hiệu quả trên các trang web chạy trên một máy chủ duy nhất.
So sánh APCu với Redis và Memcached
Cả ba đều là hệ thống lưu trữ key-value trong bộ nhớ (in-memory key-value stores) được sử dụng phổ biến để tăng tốc ứng dụng web, nhưng chúng có những đặc điểm và trường hợp sử dụng khác nhau.
Tiêu chí | APCu | Redis | Memcached |
---|---|---|---|
Bản chất | Phần mở rộng PHP (PHP Extension). Lưu trữ dữ liệu người dùng trong bộ nhớ chia sẻ (shared memory) của cùng một máy chủ. | Server lưu trữ dữ liệu trong bộ nhớ, độc lập (standalone). Có thể coi là một "data structure server". | Server lưu trữ dữ liệu trong bộ nhớ, độc lập (standalone). Tập trung vào key-value đơn giản. |
Phạm vi | Chỉ trên một máy chủ (single-server). Không thể chia sẻ cache giữa nhiều máy chủ web. | Mạng (networked). Có thể chạy trên cùng máy chủ hoặc máy chủ riêng biệt. Hỗ trợ cluster, replication. | Mạng (networked). Thường chạy trên các máy chủ riêng biệt. Phân tán cache thường do client quản lý. |
Bền bỉ | Không. Dữ liệu mất khi khởi động lại web server hoặc PHP-FPM. | Có (tùy chọn). Hỗ trợ lưu dữ liệu xuống đĩa (snapshot RDB, append-only file AOF) để phục hồi sau khi khởi động lại. | Không. Dữ liệu mất khi khởi động lại tiến trình Memcached. |
Kiểu dữ liệu | Lưu trữ biến PHP đã được serialize (string, number, array, object). | Hỗ trợ nhiều kiểu dữ liệu phức tạp: Strings, Lists, Sets, Sorted Sets, Hashes, Bitmaps, HyperLogLogs, Streams. | Chủ yếu là key-value dạng string (dữ liệu được serialize thành string trước khi lưu). Có giới hạn kích thước value (mặc định 1MB). |
Hiệu năng | Rất nhanh cho truy cập cục bộ vì dùng shared memory, không có độ trễ mạng (network latency). | Rất nhanh. Có độ trễ mạng nếu chạy trên server riêng, nhưng vẫn nhanh hơn nhiều so với database. Thường single-threaded cho xử lý lệnh. | Rất nhanh. Thường được coi là nhanh hơn Redis một chút cho các thao tác get/ set đơn giản do kiến trúc đa luồng (multi-threaded). Có độ trễ mạng. |
Khả năng mở rộng | Hạn chế. Chỉ mở rộng theo chiều dọc (tăng RAM, CPU cho máy chủ). Không thể mở rộng ngang. | Rất tốt. Hỗ trợ mở rộng ngang qua Redis Cluster, Sentinel (high availability). | Tốt. Mở rộng ngang bằng cách thêm các node Memcached mới. Client library sẽ lo việc phân phối key. |
Độ phức tạp | Đơn giản. Chỉ cần cài đặt PHP extension và cấu hình php.ini. File object-cache.php xử lý tích hợp WordPress. | Phức tạp hơn. Cần cài đặt, cấu hình và quản lý một tiến trình server riêng biệt. Nhiều tùy chọn cấu hình (persistence, memory, network). | Trung bình. Đơn giản hơn Redis nhưng vẫn cần cài đặt và quản lý server riêng. |
Trường hợp sử dụng | Cache opcode (tích hợp sẵn), object cache cho ứng dụng PHP trên một máy chủ duy nhất. Tăng tốc thực thi PHP cục bộ. | Cache opcode (tích hợp sẵn), object cache cho ứng dụng PHP trên một máy chủ duy nhất. Tăng tốc thực thi PHP cục bộ. | Chủ yếu là object caching quy mô lớn, phân tán. Giảm tải database hiệu quả cho các ứng dụng đọc nhiều. Session caching. |
Chi phí mạng | Không. Truy cập trực tiếp bộ nhớ. | Có. Giao tiếp qua mạng (ngay cả khi trên cùng server cũng qua TCP/IP hoặc Unix socket). | Có. Giao tiếp qua mạng là cốt lõi. |
Tóm tắt và lựa chọn:
1. APCu:
- Ưu điểm: cực kỳ nhanh cho ứng dụng trên một máy chủ duy nhất, dễ cài đặt (chỉ là PHP extension), không tốn chi phí mạng.
- Nhược điểm: chỉ dùng được trên một server, không bền bỉ, cache bị xóa cùng với web server/ PHP, có thể bị phân mảnh bộ nhớ.
- Khi nào dùng: khi bạn chỉ có một máy chủ web chạy ứng dụng PHP (ví dụ: một trang WordPress đơn lẻ) và muốn cách đơn giản nhất để tăng tốc object cache cục bộ.
2. Redis:
- Ưu điểm: rất linh hoạt, hỗ trợ nhiều kiểu dữ liệu phức tạp, có tùy chọn lưu trữ bền bỉ, khả năng mở rộng tốt (cluster), nhiều tính năng hơn cache đơn thuần (pub/ sub, queue).
- Nhược điểm: phức tạp hơn để cài đặt và quản lý, tốn tài nguyên hơn Memcached, có độ trễ mạng.
- Khi nào dùng: khi bạn cần một giải pháp cache phân tán (chạy trên nhiều server), cần lưu trữ bền bỉ, cần các cấu trúc dữ liệu phức tạp hoặc muốn dùng cache cho nhiều mục đích khác ngoài object caching.
3. Memcached:
- Ưu điểm: rất nhanh cho key-value đơn giản, kiến trúc đa luồng hiệu quả cho nhiều kết nối, dễ mở rộng ngang, đơn giản hơn Redis.
- Nhược điểm: chỉ lưu key-value dạng string, không bền bỉ, không có các tính năng nâng cao như Redis.
- Khi nào dùng: khi bạn cần một hệ thống object cache phân tán, hiệu năng cao, đơn giản cho nhiều máy chủ web và không cần lưu trữ bền bỉ hay các cấu trúc dữ liệu phức tạp.
Lựa chọn giữa chúng phụ thuộc vào kiến trúc hệ thống của bạn (một hay nhiều server), yêu cầu về tính bền bỉ của dữ liệu cache và các tính năng bạn cần ngoài việc caching đơn thuần. Đối với một trang WordPress đơn lẻ, APCu thường là lựa chọn đơn giản và hiệu quả. Khi trang web phát triển và cần mở rộng ra nhiều máy chủ, Redis hoặc Memcached sẽ là các lựa chọn phù hợp hơn.
Tại sao nên chọn WPCB APCu Cache Manager?
Nếu chịu khó tìm kiếm trên Google, chắc hẳn bạn sẽ thấy một vài plugin miễn phí hỗ trợ kích hoạt APCu Object Cache cho WordPress, chẳng hạn như APCu Manager hay atec Cache APCu. Tuy nhiên, plugin WPCB APCu Cache Manager do chúng tôi phát triển có một số ưu điểm vượt trội:
1. Bộ đệm cục bộ (local cache – $local_cache
): plugin triển khai một lớp cache thứ hai ngay trong bộ nhớ của yêu cầu PHP hiện tại ($local_cache
). Khi một đối tượng được lấy từ APCu hoặc được set
, nó cũng được lưu vào mảng này. Các lần gọi wp_cache_get
tiếp theo cho cùng một key trong cùng một request sẽ trả về dữ liệu ngay lập tức từ mảng này mà không cần gọi lại APCu.
2. Xử lý xóa cache (flush) thông minh và an toàn:
- Ưu điểm: phương thức
flush()
ưu tiên sử dụngAPCuIterator
(nếu có) để chỉ xóa các khóa (keys) thuộc về trang web WordPress hiện tại (dựa trên prefix). Đây là cách xóa cache an toàn nhất trong môi trường dùng chung APCu, vì nó không ảnh hưởng đến dữ liệu của các ứng dụng khác. - Cơ chế dự phòng an toàn: nếu
APCuIterator
không khả dụng, nó không tự động xóa toàn bộ cache APCu (apcu_clear_cache()
) – hành động này rất nguy hiểm trên server dùng chung. Thay vào đó, nó chỉ xóa local cache và ghi log lỗi. Nó chỉ cho phép xóa toàn bộ cache APCu nếu hằng sốWP_APCU_ALLOW_FULL_FLUSH
được định nghĩa làtrue
và việc xóa được thực hiện qua giao diện dòng lệnh (CLI
), ngăn chặn việc vô tình xóa toàn bộ cache từ một yêu cầu web.
3. Hỗ trợ nhóm không bền vững (non-persistent groups): cho phép cấu hình để một số nhóm cache nhất định (ví dụ: comments
, counts
, plugins
theo mặc định) chỉ được lưu trong bộ đệm cục bộ ($local_cache
) mà không lưu vào APCu. Điều này hữu ích cho dữ liệu thay đổi liên tục hoặc không cần chia sẻ giữa các request.
4. Sử dụng prefix kỹ lưỡng (multisite & collision avoidance): tạo key trong APCu bằng cách kết hợp một tiền tố chung ($key_prefix
– lấy từ WP_CACHE_KEY_SALT
hoặc DB_NAME
) và tiền tố riêng cho từng blog trong môi trường multisite ($blog_prefix
). Điều này đảm bảo các trang khác nhau trên cùng mạng multisite hoặc các cài đặt WordPress khác nhau trên cùng server (nếu WP_CACHE_KEY_SALT
khác nhau) không ghi đè lên cache của nhau.
5. Sao chép đối tượng (object cloning): khi lấy (get
) hoặc đặt (set
) dữ liệu là đối tượng (object
), file này sử dụng clone
để tạo bản sao. Điều này ngăn chặn việc sửa đổi đối tượng đã lấy từ cache ảnh hưởng đến bản gốc trong APCu/ local cache và ngược lại. Đây là một thực hành tốt để đảm bảo tính toàn vẹn dữ liệu.
6. Mã nguồn hiện đại và rõ ràng: sử dụng các tính năng của PHP 7.4+ như khai báo kiểu (type hinting) cho tham số và giá trị trả về (string
, int
, bool
, void
, array
). Điều này làm cho mã nguồn dễ đọc, dễ bảo trì hơn và giúp phát hiện lỗi sớm hơn.
7. Thống kê chi tiết: cung cấp số liệu thống kê ngay trong WordPress Dashboard, riêng biệt cho cache hits/ misses của cả local cache và APCu cache, giúp việc theo dõi và tối ưu hiệu suất dễ dàng hơn.
8. Cập nhật tự động: plugin được tích hợp sẵn tính năng cập nhật tự động, cho phép các bạn có thể cập nhật phiên bản mới một cách dễ dàng ngay khi nó phát hành.
9. Xóa cache dễ dàng: plugin sẽ tự động xóa cache khi cần thiết. Nếu bạn muốn làm điều đó thủ công, có thể sử dụng nút Xóa APCu Cache ngay trên Admin Bar.
Tóm lại, WPCB APCu Cache Manager là một plugin triển khai mạnh mẽ, an toàn và được tối ưu hóa tốt cho việc sử dụng APCu với WordPress. Nó giải quyết nhiều vấn đề tiềm ẩn (như xung đột key, xóa cache không an toàn, hiệu năng truy cập lặp lại) mà các file object-cache.php
sử dụng APCu đơn giản hơn có thể gặp phải.
Một số lưu ý khi sử dụng APCu Object Cache
1. Vì đặc tính cache truy vấn database nên:
- Không sử dụng plugin WPCB APCu Cache Manager nói riêng và các plugin Object Cache nói chung với các plugin như Google for WooCommerce (Google Listings and Ads), Product Feed PRO for WooCommerce, Product Feed for WooCommerce, các plugin tạo bài viết tự động…
- Trước khi cập nhật một lượng lớn dữ liệu trên website, chẳng hạn như sử dụng các plugin import dữ liệu, plugin chỉnh sửa dữ liệu hàng loạt, xóa nhiều bài viết cùng lúc… các bạn nên tạm thời tắt plugin WPCB APCu Cache Manager đi, xong việc thì bật lại.
Nếu không, rất có thể website của bạn sẽ bị treo vì plugin phải đọc, ghi, xóa dữ liệu liên tục và quá mức.
2. Trong lần đăng nhập đầu tiên vào WordPress Admin (sau một thời gian dài), có thể các bạn sẽ cảm thấy tốc độ truy cập chậm hơn bình thường. Nguyên nhân là do plugin cần thời gian để kiểm tra, tiến hành xóa cache cũ và nạp cache mới. Đây là tính năng, không phải lỗi. Sau khi có cache, tốc độ truy cập sẽ nhanh hơn.
Làm sao để cài đặt WPCB APCu Cache Manager?
Đây là plugin độc quyền và hiện tại chúng tôi chỉ triển khai cho các website đang sử dụng dịch vụ WordPress Hosting do WP Căn bản cung cấp. Nó sẽ có mặt trong dịch vụ tối ưu WordPress miễn phí.
Số lượng website được hỗ trợ cài đặt tùy theo gói host mà bạn đã mua. Cụ thể:
- Nano: 1 website
- Mini: 2 website
- Small: 3 website
- Medium: 4 website
- Large: 5 website
- Special: 6 website
Bạn muốn sở hữu plugin này trên website của mình? Hãy liên hệ ngay với chúng tôi nhé.
Nếu bạn thích bài viết này, hãy theo dõi blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất. Cảm ơn rất nhiều. :)
Để lại một bình luận