Khi tìm hiểu về các bài viết tăng tốc WordPress, có thể bạn sẽ thấy mình nhắc qua khá nhiều hình thức lưu bộ nhớ đệm cho website (hay còn gọi là Cache/Caching), đây là một trong các phương pháp để tăng tốc website WordPress rất tốt. Nên nhiều bạn có phản hồi là nên dùng cái nào, dùng hết được không,..vâng vâng,…Do vậy bây giờ mình sẽ làm một bài tổng hợp về các hình thức caching trong WordPress mà mình biết được để nói về công dụng của nó, khả năng ứng dụng cũng như nhược điểm để mọi người có cái nhìn tổng quan hơn.
Khi nào nên sử dụng HTML Caching
Khi nào nên sử dụng Opcode Cache
Các plugin cho phương thức này
Đây là hình thức lưu bộ nhớ đệm đơn giản và hầu hết cho thể áp dụng cho mọi website (trừ những trang phụ thuộc vào cookie/session như giỏ hàng, thanh toán trong website bán hàng).
Hình thức này nghĩa là nó sẽ lưu nội dung của một trang được truy cập bởi một người mới nhất thành một tập tin HTML tĩnh và sẽ được lưu ở một nơi cố định trong ổ cứng của máy chủ. Sau đó, máy chủ sẽ được cấu hình để tự động sử dụng lại tập tin HTML tĩnh này mà không cần phải thông qua các bước xử lý đến máy chủ như khi truy cập vào website bình thường.
Opcode Caching là một thành phần mở rộng (extension) của PHP để làm gia tăng hiệu suất xử lý của nó bằng cách lưu lại kết quả trả về cho lần xử lý đầu tiên và xử dụng nó cho các lần gửi truy vấn tiếp theo để tránh việc một đoạn code phải xử lý nhiều lần mà trả về cùng 1 kết quả. Nhưng dữ liệu cache này sẽ được lưu vào RAM.
Opcode Caching hoạt động tốt hay không phụ thuộc vào Opcache System (một hệ thống tiền xử lý của phương thức này), trong danh sách Opcache System thì mình biết được có một số cái tên sau
dùng khá tốt:
Ngoài ra còn một số system khác như eAccelerator, WinCache nhưng nó đều đã rất củ kỹ, không nên dùng ở thời điểm hiện tại.
Do đây là một kỹ thuật cache nên nó sẽ làm việc với kỹ thuật Object Caching trong WordPress với các plugin dưới đây. Đừng nên cài vào nếu bạn không chắc chắn server của mình đã được cài một trong các system ở trên.
Đây là một phương thưc riêng trong WordPress vì mã nguồn này có hỗ trợ phương thức lưu cache cho các đối tượng như query, session hoặc bất cứ cái gì đó được xử lý bằng code PHP trong WordPress, thông qua một hàm tên là wp_cache.
Phương thức này không thể sử dụng độc lập mà nó cần sự hỗ trợ của các system cache khác như:
Tuy rằng nó cần một system hỗ trợ mà hầu hết là các system đó sẽ hỗ trợ lưu cache vào RAM nhưng Object Cache vẫn có thể hoạt động được bằng cách ghi cache vào ổ cứng, bằng cách dùng plugin W3 Total Cache và chọn method là Disk.
Do nó là một phương thức riêng trong WordPress nên điều bạn cần là viết code sử dụng phương thức này. Tuy nhiên, bạn vẫn có thể dùng các plugin mà mình đã kể ở phần Opcode Cache vì các plugin đó có nhiệm vụ áp dụng Opcode Cache System cho việc lưu Object Cache.
Hình thức này nghĩa là website sẽ ép trình duyệt lưu một bản cache trong bộ nhớ của trình duyệt trên máy tính người dùng để các lần truy cập tiếp theo của họ có tốc độ tốt hơn, vì lúc này các file được lưu ở cache không phải mất công tải lại một lần nữa. Thường thì kỹ thuật này trình duyệt sẽ lưu cache cho các file tĩnh trong website như hình ảnh, CSS, Javascript,…và nếu website bạn đang bật gzip thì nó sẽ lưu luôn nội dung của toàn website.
Hãy tưởng tượng rằng mỗi lần khách truy cập họ sẽ gửi một truy vấn vào webserver (Apache hoặc NGINX), sau đó webserver sẽ gửi truy vấn này đến PHP để nó xử lý và nếu truy vấn này có yêu cầu lấy dữ liệu từ database thì PHP sẽ gửi dến database (MySQL Server/MariaDB Server). Ở công đoạn xử lý trong database, nó sẽ tiến hành đánh dấu lại dữ liệu có trong database (indexing) và sau đó mới lấy nội dung mà khách truy cập cần để trả về. Và chuyện gì sẽ xảy ra nếu database của bạn có dung lượng lên đến đơn vị GB và có nhiều truy vấn gửi đến cùng lúc? (không kể đến các truy vấn đã được cache bởi các kỹ thuật khác).
Đó là lý do tại sao Database Caching lại ra đời, trong database caching còn có rất nhiều kiểu cache khác nhau như lưu cache cho toàn table hoặc lưu cache cho từng loại dữ liệu riêng biệt. Nếu bạn có ý định áp dụng database caching vào WordPress thì mình khuyến khích bạn nên sử dụng một plugin chuyên biệt để làm việc này như W3 Total Cache là lựa chọn rất tốt, ngoài ra bạn nên sử dụng nó cùng với một system cache có hỗ trợ database như Memcached chẳng hạn.
Trường hợp bạn muốn tự viết code trong WordPress để tùy chỉnh dữ liệu muốn được lưu database cache thì có thể áp dụng Transient API.
Mặc dù có thể các kỹ thuật lưu cache thường dùng trong WordPress có thể sẽ nhiều hơn danh sách này nhưng mình chỉ liệt kê ra các kỹ thuật mà mình đã từng sử dụng và biết tới, và đây cũng là các kỹ thuật rất phổ biến ở các website lớn. Tuy nhiên, điều này không có nghĩa là bạn áp dụng hết toàn bộ 5 kỹ thuật này là website có tốc độ tải tốt nhất mà chỉ nên chọn ra một số kỹ thuật phù hợp với quy mô của website cũng như khả năng đáp ứng của máy chủ.
Hiện tại ở cddos.net mình đang dùng các kỹ thuật lưu cache là:
Còn bạn thì sao?