So sánh OpCache với Memcached: Bạn nên chọn loại cache nào cho WordPress ?

0
338

So sánh OpCache với Memcached: Bạn nên chọn cache nào cho WordPress ? Khi đi sâu về lĩnh vực Cache, mọi người thường hỏi OpCache với Memcached – cache nào tốt hơn ? Câu trả lời là chúng hoàn toàn khác nhau, không loại trừ lẫn nhau, mà bạn có thể dùng phối hợp cả hai loại cache này với nhau.

Tuy nhiên, OpCache và Memcached không phải chỉ là 2 loại cache đang hiện có. Trong bài viết này, tôi sẽ giải thích ngắn gọn các loại cache khác nhau bạn cần sử dụng để tối ưu hóa cho tốc độ WordPress tốt hơn.

Cách đây nhiều năm, tôi cài WP Super Cache cho blog của mình. Tôi gặp vấn đề với nó và cuối cùng là tắt đi và quên luôn về cache. Tôi đã bỏ qua nó vì không liên quan cho blog một công ty. Nhưng khi làm site mới tôi đã suy nghĩ lại về việc dùng cache. Cache sẽ không quan trọng nếu bạn không đăng bài, nhưng nếu bạn có một blog mà không đăng bài thường xuyên thì điều đó có thể tổn hại đến thương hiệu của bạn. Ngoài ra, điều đó còn là cách tiện lợi giúp phát tán nội dung và thu hút khách truy cập tiềm năng đến site bạn.

OpCache hay Memcached ?

Cách đây vài tháng, một trong những khách hàng Managed Dedicated Server đã hỏi chúng tôi về cache cho site WordPress của mình. Anh ấy nói đến OpCache và Memcached, và xin lời khuyên nên dùng loại nào. Đây là loại cache mà tôi thích dùng, nên tôi nói ngay và khuyên anh ta cách tận dụng cả 2 loại cache này.

Tuy nhiên, tôi nhận ra rằng ngay cả các webmaster hầu hết cũng không hiểu cache hoạt động như thế nào, cho nên tôi hi vọng bài viết này sẽ làm sáng tỏ chủ đề cache.

Tôi quyết định nghiên cứu và thử nghiệm thêm một số công cụ cache, nhưng thật lòng mà nói thì lĩnh vực cache không có gì thay đổi nhiều trong thời gian gần đây. Nhiều công cụ cache từng được sử dụng rộng rãi nay đã không còn được phát triển.

Và điều phức tạp hơn là chúng tôi chạy server Plesk và cPanel và một số loại cache đã hoạt động tốt và một số khác thì không. Rất khó tìm một giải pháp phù hợp cho tất cả, nhưng tôi tin là tôi đã tìm thấy nó.

Nếu bạn chạy một HTML tĩnh, thì những gì bạn cần là Leverage Browser Cache. Nếu site bạn có giao diện PHP động với nội dung được tạo ra thì bạn cần đến Leverage Browser Cache, một số cache server được xử lí bằng Nginx và cache bytecode như OpCache được biên dịch ngay trong các phiên bản PHP mới nhất hiện nay. Và nếu bạn có database động, bạn cần lưu cache key/value gọi là Memcached. Bạn cần có PHP 7.x trên web server chạy HTTP-2.

1. Browser Caching

Leverage Browser Caching, tôi đã đề cập đến trong bài viết khác nên sẽ không nói thêm ở đây. Bạn chỉ cần một số rule đơn giản trong .htaccess hoặc web.config. Loại cache này kiểm soát cách người dùng cache site của bạn, mọi site đều cần loại cache này, không có ngoại lệ.

2. Server Caching

Mọi server của chúng tôi đều chạy Nginx proxy web server. Nginx chạy trước Apache và tăng tốc độ hiển thị nội dung. Nginx cũng tạo nên tính sẵn sàng và mở rộng cao cho webiste được truy cập nhiều, nhờ khả năng xử lý nhiều người dùng cùng lúc. Nginx cũng xử lý cache ở cấp độ server.

Nginx cache file tĩnh trong một thư mục tạm và và sử dụng chúng từ đó hơn là gửi yêu cầu từ hệ thống. Đây là một phần nhỏ của những gì Nginx tỏ ra nhanh hơn so với Apache. Nếu bạn chạy một site trên Linux server, điều kì diệu này sẽ luôn xảy ra.

3. Application Front-end Caching

Mã PHP có thể cahe ở mức độ bytecode. Khi một script PHP được biên dịch bởi web server, một phần thời gian thực thi là để định dạng lại mã thành dạng máy có thể đọc được. Với bytecode cache như OpCache, mã sẽ được biên dịch một lần và lưu lại trong bộ nhớ server. Mã được biên dịch trước này sau đó được sử dụng lại khi có yêu cầu thay vì phải biên dịch và phân giải lại từ đầu, điều này giúp tiết kiệm thời gian, làm cho site chạy nhanh hơn. OpCache có sẵn trong PHP 5.5+ và haotj động mà không cần thêm bất cứ cấu hình nào trong code PHP của bạn.

Nếu chưa sử dụng PHP 5.5+, thì bạn nên nâng cấp PHP. Nhìn từ quan điểm bảo mật, bạn nên dùng PHP 5.6+ (nếu PHP 7 thì càng tốt, nếu ứng dụng hỗ trợ)

Nếu bạn không thể nâng cấp PHP do có một số script dựa trên PHP 5.3-, thì bạn có thể bỏ script đó đi, vì PHP 5.5 đã ra đời từ tháng 6/2013.

4. Database-level Caching

Mảnh ghép cuối cùng của “bức tranh” cache là tối ưu hóa truy vấn database bằng cách lưu lại chuỗi truy vấn và database object dẫn đến câc database call và hiển thị trang. Engine tốt nhất cho việc này là Memcached. Memcached sẽ giảm tải server rõ rệt mà không cần nhiều bộ nhớ. Vì vậy sử dụng Memcached cho một database có nhiều lượng truy cập có thể không tương thích với host chia sẻ. Nhưng nếu bạn có bộ nhớ lớn, Memcached sẽ tăng tốc rõ rệt cho site WordPress.

Cuối cùng, bạn có thể nhận ra rằng không cần thiết phải tranh cãi lựa chọn giữa OpCache hay Memcached. Cả 2 loại cache này thực hiện 2 công việc bổ sung cho nhau, do đó bạn nên sử dụng cả 2 chứ không phải một trong 2.

Kết luận

Tôi đã xem một số thống kê ở đâu đó, nói rằng 25% website mới đều sử dụng WordPress. Còn lại 75% tôi nghĩ đó là một con số lớn, sẽ sử dụng WordPress cho blog của công ty. Đứng thứ 2 là Joomla, Drupal và kế tiếp là Magento. Vì vậy rất có thể bạn sẽ cần sử dụng cả 4 loại cache nói trên. Ngoài ra, chuyển sang dùng PHP 7.x cũng là một phần của chiến lược tối ưu hóa website. Mọi ứng dụng sẽ chạy nhanh hơn với PHP 7 so với PHP 5.6.

Theo Zend Magento, thời gian thực thi nhanh hơn gấp 2 lần khi dùng PHP 7, và lượng bộ nhớ sử dụng cũng giảm bớt 30%:

Tương tự, Drupal chạy nhanh hơn 72%:

còn WordPress cũng nhanh gấp đôi khi dùng PHP 7:

Nếu sử dụng WordPress, bạn có thể tận dụng mọi loại cache chỉ cần dùng duy nhất một plugin cache, đó là W3 Total Cache. Đây là một plugin cache phức hợp, nhưng bao gộp 4 loại cache nói trên, để bạn có thể tăng tốc WordPress và hiểu được những gì bạn đang làm.

ĐỂ LẠI BÌNH LUẬN