介绍:通过代码优化来加速 WordPress 是一种非常有效的方式。前端优化包括延迟加载资源和移动非关键 CSS;后台优化可以限制心跳 API 和禁用未使用的 REST API 端点;数据库优化涉及清理冗余数据和优化查询;总体性能优化则包括禁用不必要的功能和调整心跳频率。另外,延迟加载 WooCommerce 和第三方脚本也是提升网站性能的有效措施。这些优化技巧有助于改善用户体验、减少服务器负担,提高网站加载速度和响应性能。
通过代码优化来加速 WordPress 是一种非常有效的方式,可以帮助减轻对插件的依赖,并实现更深层次的性能提升。以下是一些关键的代码优化措施,涵盖前端、后台、数据库和整体性能的各个方面。
1.1 延迟加载资源
延迟加载脚本和样式:通过将脚本和样式延迟加载,减少初始页面加载时间。
// functions.php
function defer_parsing_of_js($url) {
if (is_user_logged_in()) return $url; // 不延迟登录用户的脚本加载
if (false === strpos($url, '.js')) return $url; // 只延迟 JS 文件
return str_replace(' src', ' defer="defer" src', $url);
}
add_filter('script_loader_tag', 'defer_parsing_of_js', 10);
异步加载 JavaScript:
// functions.php
function add_async_attribute($tag, $handle) {
if (is_admin()) return $tag; // 不影响管理员区域
return str_replace('<script ', '<script async ', $tag);
}
add_filter('script_loader_tag', 'add_async_attribute', 10, 2);
1.2 移动非关键 CSS
将非关键 CSS 移动到页面底部,减少初始渲染时间。
// functions.php
function move_non_critical_css() {
// 把所有非关键 CSS 文件在底部加载
if (!is_admin()) {
remove_action('wp_enqueue_scripts', 'wp_enqueue_styles');
add_action('wp_footer', 'wp_enqueue_styles');
}
}
add_action('wp_enqueue_scripts', 'move_non_critical_css', 1);
2.1 限制心跳 API
WordPress 的心跳 API 控制后台自动保存和其他 AJAX 操作,可以通过减少心跳频率降低服务器压力。
// functions.php
function modify_heartbeat_settings($settings) {
$settings['interval'] = 60; // 每 60 秒触发一次心跳
return $settings;
}
add_filter('heartbeat_settings', 'modify_heartbeat_settings');
2.2 禁用未使用的 REST API 端点
禁用未使用的 REST API 端点减少不必要的后台负载。
// functions.php
function disable_unused_rest_endpoints($endpoints) {
if (is_user_logged_in()) return $endpoints; // 保留登录用户的端点
unset($endpoints['/wp/v2/users']);
unset($endpoints['/wp/v2/comments']);
// 添加更多需要禁用的端点
return $endpoints;
}
add_filter('rest_endpoints', 'disable_unused_rest_endpoints');
3.1 优化数据库查询
减少 WordPress 中的无效或冗余查询。例如,移除不必要的自动草稿。
// functions.php
function clean_up_database() {
global $wpdb;
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'revision'");
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'auto-draft'");
}
add_action('wp_scheduled_cleanup', 'clean_up_database');
3.2 使用 WP_Query 高效查询
使用 WP_Query 优化复杂查询,以减少数据库负载。
// example.php
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 10,
'meta_query' => array(
array(
'key' => 'meta_key',
'value' => 'meta_value',
'compare' => 'LIKE'
)
)
);
$query = new WP_Query($args);
4.1 禁用不必要的功能
禁用 WordPress 的默认功能(如 Embeds、Emoji),减少前端和后台的开销。
// functions.php
// 禁用 Embeds
function disable_embeds_code_init() {
remove_action('rest_api_init', 'wp_oembed_register_route');
add_filter('embed_oembed_discover', '__return_false');
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
}
add_action('init', 'disable_embeds_code_init', 9999);
// 禁用 Emoji
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
4.2 调整 WordPress 心跳频率
减少心跳频率可减轻服务器负担,特别是在大量并发用户情况下。
// functions.php
add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60; // 每 60 秒心跳一次
return $settings;
});
4.3 使用对象缓存
对象缓存可以减少数据库查询次数,特别适用于大型和高流量网站。
// functions.php
function cache_query_results($posts) {
if (is_admin()) return $posts; // 不缓存后台查询
$cache_key = 'my_custom_cache_key';
$cache_group = 'my_cache_group';
$cached_posts = wp_cache_get($cache_key, $cache_group);
if ($cached_posts === false) {
$cached_posts = $posts; // 获取查询结果
wp_cache_set($cache_key, $cached_posts, $cache_group, 3600); // 缓存查询结果一小时
}
return $cached_posts;
}
add_filter('posts_results', 'cache_query_results', 10, 2);
4.4 优化分页
如果网站使用分页,确保分页查询是高效的。
// functions.php
function custom_pagination($query) {
if ($query->is_main_query() && !is_admin()) {
$query->set('no_found_rows', true); // 禁用总行数查询
$query->set('update_post_meta_cache', false); // 禁用元数据缓存
$query->set('update_post_term_cache', false); // 禁用分类缓存
}
}
add_action('pre_get_posts', 'custom_pagination');
5.1 延迟加载 WooCommerce 脚本
如果使用 WooCommerce,可以通过仅在需要时加载脚本来减少负载。
// functions.php
function conditional_woocommerce_assets() {
if (!is_woocommerce() && !is_cart() && !is_checkout()) {
wp_dequeue_script('wc-cart');
wp_dequeue_style('woocommerce-general');
// 添加更多 WooCommerce 资源
}
}
add_action('wp_enqueue_scripts', 'conditional_woocommerce_assets', 99);
5.2 延迟加载第三方脚本
仅在特定页面或条件下加载第三方脚本。
// functions.php
function conditionally_load_third_party_scripts() {
if (is_page('contact')) {
// 仅在联系页面加载 Google Maps 脚本
wp_enqueue_script('google-maps', 'https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY', null, null, true);
}
}
add_action('wp_enqueue_scripts', 'conditionally_load_third_party_scripts');
通过上述代码优化措施,你可以显著改善 WordPress 网站的加载速度和响应性能:
前端优化:延迟加载资源和移动非关键 CSS。
后台优化:限制心跳 API 和禁用未使用的 REST API 端点。
数据库优化:清理冗余数据和优化查询。
总体性能优化:禁用不必要的功能和调整心跳频率。
其他措施:延迟加载 WooCommerce 和第三方脚本。
这些代码优化技巧有助于减少服务器负担,提高用户体验,并使网站更快、更响应。根据实际需求和网站架构,选择适合的优化方法并定期监控和调整,以维持最佳性能。
—— 评论区 ——