Tối ưu menu cho website WordPress với Menu Caching

Có thể nhiều người không biết Menu trong WordPress bản chất nó cũng là 1 custom post type như Post hoặc Page mà thôi nhưng đa số người dùng không hiểu và bỏ qua phần này mà chỉ config tạo cache cho các phần khác.

Trong bài viết mình giới thiệu đến bạn 1 plugin giúp tạo cache cho menu WordPress giúp tạo cache và

Menu WordPress hoạt động như thế nào

Dữ liệu menu nằm rải rác trên sáu (!) bảng cơ sở dữ liệu khác nhau. Khi người dùng truy cập một trang, một cuộc phiêu lưu xuyên suốt cơ sở dữ liệu sẽ bắt đầu.

Trong các bảng ‘wp_terms‘, ‘wp_term_taxonomy‘ và ‘wp_options‘, chúng ta sẽ tìm thấy ID menu, slug và vị trí theme. Sau đó, ‘wp_posts‘ và ‘wp_postmeta‘ để tìm các mục điều hướng của menu và meta của chúng.

Đây là rất nhiều bảng và thậm chí nhiều cuộc gọi vào cơ sở dữ liệu hơn! Khi tất cả dữ liệu cần thiết được thu thập, HTML menu sẽ được tạo và hiển thị cho người dùng.

Quá trình tương tự được lặp lại cho mọi menu trên trang. Menu máy tính để bàn, menu di động, một số menu ở chân trang, menu dành cho tài khoản khách hàng ở tiêu đề ngay cạnh biểu tượng giỏ hàng…

Hãy tưởng tượng tất cả các menu này, một số trong số chúng có hàng chục mục menu, tải ở mọi trang cho mọi khách truy cập trên trang web của bạn.

Việc thay đổi menu đa số ít khi thay đổi nên dễ dàng để lưu vào bộ nhớ đệm. Bộ nhớ đệm HTML của menu đã tạo sẽ ngăn chặn tất cả các lệnh gọi cơ sở dữ liệu không cần thiết này và cải thiện đáng kể thời gian tải trang.

Tối ưu menu cho website WordPress với Menu Caching

sẽ lưu trữ HTML menu và hiển thị phiên bản đã lưu trong bộ nhớ đệm cho khách truy cập , lưu cơ sở dữ liệu của bạn để chúng không phải call liên tục vào Database.

Mỗi khi người dùng truy cập một trang có menu, WordPress sẽ thu thập tất cả dữ liệu menu từ cơ sở dữ liệu, sau đó chạy mô-đun walker để tạo HTML của menu. Ngay trước khi HTML được tạo này được trả về cho người dùng, HTML sẽ được lưu vào cơ sở dữ liệu ở dạng dữ liệu tạm thời.

Lần tiếp theo người dùng yêu cầu menu cụ thể này, HTML đã lưu sẽ được trả lại cho họ thay vì tạo menu từ đầu.

Plugin này hiệu quả của nó như thế nào?

  • Lưu trữ tất cả các menu WordPress cổ điển để cải thiện thời gian tải trang
  • Có tuỳ chọn kích hoạt/hủy kích hoạt bộ đệm bằng menu
  • Xóa bộ nhớ đệm của tất cả các menu bằng một nút trên trang cài đặt.
  • Mỗi khi bạn chỉnh sửa một menu, bộ nhớ đệm của nó sẽ tự động bị xóa.
  • Tất cả dữ liệu được lưu trong bộ nhớ cache sẽ tự động được xóa sau mỗi 10 giờ để giữ cho mọi thứ luôn mới
  • Tương thích với các plugin bộ nhớ đệm như WPRocket, W3 Total Cache, v.v.
  • Tương thích với hầu hết các plugin dịch thuật. Đã thử nghiệm với WPML và TranslatePress.

Thử nghiệm trên một trang web thương mại điện tử quy mô vừa với một menu lớn với nhiều danh mục, một menu di động độc lập và một vài menu nhỏ hơn.

Đối với người dùng quản trị viên

  • Thời gian tải tất cả các menu – không có bộ nhớ đệm: 0,46 giây (trung bình)
  • Thời gian tải cho tất cả các menu – với bộ nhớ đệm: 0,0015 giây (trung bình)
  • Ưu điểm về tốc độ: nhanh hơn 300 lần, Menu tải gần như ngay lập tức.

Đối với khách truy cập ẩn danh (không đăng nhập vào web)

  • Thời gian tải cho tất cả các menu – không có bộ nhớ đệm: 0,232194 giây.
  • Thời gian tải cho tất cả các menu – với bộ nhớ đệm: 0,001185 giây
  • Lợi ích về tốc độ: nhanh hơn ~200 lần – tải menu gần như ngay lập tức!

Bạn lưu ý những số liệu này phụ thuộc vào cài đặt WordPress, cấu hình máy chủ của bạn và nhiều thông số khác, nhưng kết quả sẽ giống nhau.

Hơn nữa, tôi đã thử nghiệm nó trong vài ngày, trên các trang web trước đây có chính sách bộ đệm cực đoan và sự khác biệt vẫn thấy rõ. Các menu tải ngay lập tức, nó rất đáng chú ý.

Với Menu Cache, thay vì phải xây dựng menu mọi lúc làm tốn thời gian và tài nguyên máy chủ thì các menu của bạn sẽ tải ngay lập tức từ bộ đệm.

Plugin này có đáng để cài

Câu trả lời ngắn gọn là có.

Nếu bạn sử dụng plugin bộ đệm và cấu hình tốt và một trang nhất định được cung cấp từ bộ đệm thì bạn có thể không thấy sự khác biệt lớn về thời gian tải tổng thể nhưng tổng thể nó cải thiện thời gian tải.

Nhiều trường hợp một trang không được cung cấp từ bộ đệm bạn sẽ nhận thấy sự khác biệt rất lớn. Một số trường hợp mà đa số plugin bộ nhớ đệm sẽ bỏ qua:

  • Nếu bạn không sử dụng plugin bộ đệm trang (Tất nhiên rồi :D)
  • Không có phiên bản được lưu trong bộ nhớ cache của trang được yêu cầu. Bạn được hưởng lợi từ bộ nhớ đệm menu trong lần tải đầu tiên của mỗi trang, trước khi phiên bản được lưu trong bộ nhớ đệm được lưu.
  • Khi người dùng được kết nối. Ngay cả khi sử dụng bộ đệm cho mỗi người dùng cho người dùng đã đăng nhập, bộ nhớ đệm menu vẫn rất hữu ích để tạo nhanh menu trong khi tạo tệp bộ đệm.
  • Trên các trang thương mại điện tử trên các trang không thể được lưu vào bộ nhớ đệm theo mặc định, chẳng hạn như giỏ hàng, thanh toán, tài khoản của tôi, danh sách mong muốn, v.v.
  • Trên hầu hết các trang thương mại điện tử, khi khách hàng thêm thứ gì đó vào giỏ hàng, họ sẽ ngừng phân phát các trang từ bộ đệm để ngăn dữ liệu sai trong giỏ hàng nhỏ.
  • Trong một số yêu cầu AJAX tải nội dung từ các trang có menu.

Làm thế nào để cài Menu Caching

Bạn chỉ cần cài đặt plugin và kích hoạt Menu Caching trong phần tìm kiếm plugin, lưu ý, sau khi cài bạn nên flush all cache bạn đang sử dụng để tránh xung đột cache do plugin này tạo ra nhé.

Bộ đệm sẽ được xóa tự động và được tạo lại sau mỗi 10 giờ hoặc theo cách thủ công từ cài đặt plugin.

Nếu bạn không muốn xoá Menu caching tự động mỗi 10h thì có thể add code này vào functions.php

add_filter( 'dc_wp_menu_caching_lifetime', function( $original_value ) { return $time_in_seconds; } );

Theo mặc định, tất cả các menu hiện có đều được lưu vào bộ nhớ đệm nhưng bạn có thể chọn menu nào cần cache hoặc bỏ qua.

Okay, hy vọng bạn sẽ thấy bài viết và plugin này hữu ích.

Nếu bạn cần có thể liên hệ với chúng tôi để được hỗ trợ.

Xin cảm ơn.

Nếu bạn thấy bài viết có ích hãy sao chép link và chia sẻ bài viết
user

Yêu thích Võ thuật và Công nghệ thông tin, thích viết và chia sẽ về 2 lĩnh vực này thế thôi :D

Bài viết liên quan