Làm gì khi WordPress chạy chậm?

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Làm gì khi WordPress chạy chậm?

WP-CLI có lệnh `wp profile` cũng có thể giúp bạn nhanh chóng tìm ra đoạn code nào làm WordPress chạy chậm. Công cụ này bổ trợ làm việc với xdebug và New Relic bởi nguyên do nó khá dễ dàng cài đặt trên hosting server có cài đặt WP-CLI.

Với wp profile cho bạn chi tiết các thành phần load trong wordpress mà ảnh hưởng đến vận tốc wordpress như thời gian thực thi, số lượng truy vấn database, cache hit/miss ratio.. để giúp bạn debug dễ dàng.

Chạy lệnh wp profile stage để xem thông số tải trang ở từng thời kì sử lý code trong WordPress, bạn cũng có thể thêm tham số --url= nếu muốn tùy biến quét URL.

 $ wp profile stage --url=yourdomain.com +------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+ | stage | time | query_time | query_count | cache_ratio | cache_hits | cache_misses | hook_time | hook_count | request_time | request_count | +------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+ | bootstrap | 0.7597s | 0.0052s | 14 | 93.21% | 357 | 26 | 0.3328s | 2717 | 0s | 0 | | main_query | 0.0131s | 0.0004s | 3 | 94.29% | 33 | 2 | 0.0065s | 78 | 0s | 0 | | template | 0.7041s | 0.0192s | 147 | 92.16% | 2350 | 200 | 0.6982s | 6130 | 0s | 0 | +------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+ | total (3) | 1.477s | 0.0248s | 164 | 93.22% | 2740 | 228 | 1.0375s | 8925 | 0s | 0 | +------------+---------+------------+-------------+-------------+------------+--------------+-----------+------------+--------------+---------------+  

Khi wordpress site sử lý các request từ trình duyệt, bản tính nó đang thực thi các mã PHP script. Lệnh này chia làm 3 giai đoạn:

  • bootstrap sử lý nạp plugins, theme và các hook ban đầu (init)
  • main_query sử lý WP_Query chính
  • template Phát hiện những template trong theme được gọi dựa trên query chính và render nó.

Trong ví dụ trên, chúng ta thấy stage `bootstrap` hình như chạy hơi chậm, chúng ta sẽ đi phân tích sâu ở stage này. Lệnh wp profile stage bootstrap sẽ phân tích chi tiết những gì đang sảy ra ở thời kì bootstrap.

 $ wp profile stage bootstrap --url=runcommand.io --spotlight +--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+ | hook | callback_count | time | query_time | query_count | cache_ratio | cache_hits | cache_misses | request_time | request_count | +--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+ | muplugins_loaded:before | | 0.1644s | 0.0017s | 1 | 40% | 2 | 3 | 0s | 0 | | muplugins_loaded | 2 | 0.0005s | 0s | 0 | 50% | 1 | 1 | 0s | 0 | | plugins_loaded:before | | 0.1771s | 0.0008s | 6 | 77.63% | 59 | 17 | 0s | 0 | | plugins_loaded | 14 | 0.0887s | 0s | 0 | 100% | 104 | 0 | 0s | 0 | | after_setup_theme:before | | 0.043s | 0s | 0 | 100% | 26 | 0 | 0s | 0 | | init | 82 | 0.1569s | 0.0018s | 7 | 96.88% | 155 | 5 | 0s | 0 | | wp_loaded:after | | 0.027s | 0s | 0 | | 0 | 0 | 0s | 0 | +--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+ | total (7) | 98 | 0.6575s | 0.0043s | 14 | 77.42% | 347 | 26 | 0s | 0 | +--------------------------+----------------+---------+------------+-------------+-------------+------------+--------------+--------------+---------------+  

Ở mỗi stage sẽ được các actions khác nhau, ví dụ với bootstrap, bạn có thể thấy một vài actions như ‘plugins_loaded:before’ & ‘wp_loaded:after’. Các actions tương ứng với động thái before, after trong wordpress hooks.

Khi bạn tìm ra hook nào là nhân tố tác động đến tối ưu tốc độ wordpress, tức làm wordpress chạy chậm, có thể sử dụng tiếp lệnh sau với hook. Nhớ thêm tham số --fields= để lọc hiển thị các trường.

 $ wp profile hook plugins_loaded --url=runcommand.io --fields=callback,time,location +------------------------------------------------------------+---------+-----------------------------------------------------------------+ | callback | time | location | +------------------------------------------------------------+---------+-----------------------------------------------------------------+ | wp_maybe_load_widgets() | 0.0046s | wp-includes/functions.php:3501 | | wp_maybe_load_embeds() | 0.0003s | wp-includes/embed.php:162 | | VaultPress_Hotfixes-> protect_jetpack_402_from_oembed_xss() | 0s | vaultpress/class.vaultpress-hotfixes.php:124 | | _wp_customize_include() | 0s | wp-includes/theme.php:2052 | | EasyRecipePlus-> pluginsLoaded() | 0.0013s | easyrecipeplus/lib/EasyRecipePlus.php:125 | | GamajoGenesisHeaderNavgenesis_header_nav_i18n() | 0.0007s | genesis-header-nav/genesis-header-nav.php:61 | | DS_Public_Post_Preview::init() | 0.0001s | public-post-preview/public-post-preview.php:52 | | wpseo_load_textdomain() | 0.0004s | wordpress-seo-premium/wp-seo-main.php:222 | | load_yoast_notifications() | 0.0016s | wordpress-seo-premium/wp-seo-main.php:381 | | wpseo_init() | 0.0329s | wordpress-seo-premium/wp-seo-main.php:240 | | wpseo_premium_init() | 0.0019s | wordpress-seo-premium/wp-seo-premium.php:79 | | wpseo_frontend_init() | 0.0007s | wordpress-seo-premium/wp-seo-main.php:274 | | Black_Studio_TinyMCE_Plugin-> load_compatibility() | 0.0016s | black-studio-tinymce-widget/black-studio-tinymce-widget.php:206 | | Jetpack::load_modules() | 0.0564s | jetpack/class.jetpack.php:1672 | +------------------------------------------------------------+---------+-----------------------------------------------------------------+ | total (14) | 0.1026s | | +------------------------------------------------------------+---------+-----------------------------------------------------------------+  

Oh, tôi đã tìm ra nguyên nhân! Do hàm wpseo_init() Jetpack::load_modules() sử lý mất ~100ms ở mỗi trang được nạp.

Với tiện ích wp profile , bạn dễ dàng khám phá bên trong WordPress để trả lời câu hỏi tại sao WordPress của bạn chạy chậm ?

Chúc các bạn thành công!

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể có thể theo dấu blog này trên Twitter và Facebook

Bài viết Làm gì khi WordPress chạy chậm? được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang