If you’re reading this, you’re likely tired of the conselho padrão de desempenho do WordPress. The usual routine—installing WP Rocket, adding an image optimizer plugin, and throwing in an asset manager—often leads to a paradox: instala plugins para acelerar o site, mas os próprios plugins adicionam inchaço na base de dados, tarefas cron em segundo plano e os seus próprios carregamentos de CSS/JS.
The truth is, WordPress doesn’t need 15 performance plugins to load in under a second. True speed optimization happens at the metal layer—the server, the database, and the core code.
Neste guia, vamos contornar completamente o ecossistema de plugins. Vamos otimizar o WordPress usando configurações do lado do servidor, wp-config.php ajustes e functions.php snippets.
1. A base do lado do servidor (sem necessidade de PHP)
Antes de tocar numa única linha de código do WordPress, o ambiente do servidor deve estar fortemente otimizado. Um servidor fraco não pode ser corrigido por cache no front-end.
Atualize para PHP 8.1+
O WordPress funciona em PHP. Mudar do PHP 7.4 para o PHP 8.1 ou 8.2 pode resultar numa redução de 20-30% no tempo de execução e num consumo de memória significativamente menor. Ação: Altere isto no seu cPanel, Plesk, ou via CLI se gerir o seu próprio VPS.
Ativar compressão ao nível do servidor (Brotli em vez de Gzip)
Embora o Gzip seja padrão, Brotli (desenvolvido pela Google) fornece taxas de compressão aproximadamente 15-20% melhores para ficheiros de texto (HTML, CSS, JS) com o mesmo custo de CPU. Ação (Nginx): Certifique-se de que o seu nginx.conf tem o Brotli ativado:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Implemente o FastCGI Caching (Nginx) ou LiteSpeed Cache
Em vez de usar um plugin de cache baseado em PHP (que ainda requer que o WordPress carregue parcialmente para servir o cache), faça o cache ao nível do servidor web. O cache FastCGI do Nginx armazena o HTML gerado na RAM ou no disco e serve-o diretamente, contornando completamente o PHP e o MySQL para visitantes anónimos.
2. Endurecimento e Otimização via wp-config.php
O wp-config.php ficheiro é a sua sala de controlo. Por predefinição, o WordPress permite certos comportamentos que sobrecarregam a sua base de dados ao longo do tempo.
Adicione estes snippets logo antes da linha /* That's all, stop editing! Happy publishing. */ line.
Limite as Revisões de Posts
Por predefinição, o WordPress armazena revisões infinitas dos seus posts. Um post atualizado 50 vezes terá 50 cópias na sua wp_posts tabela da base de dados, tornando as consultas à base de dados drasticamente mais lentas.
// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );
Otimize o Intervalo de Gravação Automática
O WordPress grava automaticamente a cada 60 segundos. Se tiver vários editores a trabalhar, isto sobrecarrega a base de dados. Diminua a frequência.
// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );
Esvazie o Lixo Mais Rapidamente
Posts e comentários eliminados permanecem na base de dados durante 30 dias. Reduza este período para manter a base de dados leve.
// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
3. The “Anti-Bloat” functions.php “Anti-Bloat”
O núcleo do WordPress injeta uma enorme quantidade de scripts de suporte legado, links de descoberta e estilos inline no seu <head> e <footer> por predefinição.
To achieve maximum information gain over competitors, we won’t just tell you to “use a debloat plugin.” Here is the exact code to surgically remove the most common WordPress bloat.
Note: Add this to your Child Theme’s functions.php do seu Tema Filho ou a um mu-plugin.
/**
* The Ultimate WordPress Debloat Snippet
*/
add_action('init', function() {
// 1. Remove RSD, XMLRPC, and WLW links
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
add_filter('xmlrpc_enabled', '__return_false');
// 2. Remove WordPress version footprint (Security & Speed)
remove_action('wp_head', 'wp_generator');
// 3. Remove Shortlinks and REST API links from header
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'rest_output_link_wp_head');
// 4. Disable native Emojis (Saves 1 JS and 1 CSS HTTP Request)
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
// 5. Disable oEmbeds (If you don't embed external URLs automatically)
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
add_action('wp_footer', function() { wp_deregister_script('wp-embed'); });
});
/**
* 6. Remove Global Styles (WP 5.9+ Inline CSS Bloat)
*/
add_action('wp_enqueue_scripts', function() {
wp_dequeue_style('global-styles');
wp_dequeue_style('classic-theme-styles');
}, 100);
/**
* 7. Remove jQuery Migrate (If using modern themes/plugins)
*/
add_action('wp_default_scripts', function($scripts) {
if (!is_admin() && isset($scripts->registered['jquery'])) {
$script = $scripts->registered['jquery'];
if ($script->deps) {
$script->deps = array_diff($script->deps, ['jquery-migrate']);
}
}
});
/**
* 8. Throttle the Heartbeat API
* Prevents high CPU usage when leaving the WP Admin open
*/
add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60; // Throttle to 60 seconds
return $settings;
});
O que acabámos de alcançar?
Ao adicionar o código acima, eliminou instantaneamente até 5-8 pedidos HTTP desnecessários and removed dozens of lines of inline CSS/JS from every single page load—all without installing a single plugin.
4. Otimização de Media (O Caminho Difícil)
Plugins como o Smush ou o Imagify são convenientes, mas processam imagens no seu servidor PHP, consumindo recursos de CPU.
Conversão Manual para WebP/AVIF
Antes de carregar qualquer imagem para o WordPress, passe-a por um compressor externo sem perdas como o Squoosh.app (da Google) ou TinyPNG. Melhor ainda, converta-as para .webp ou .avif formatos localmente antes de carregar.
Aproveite o Lazy Loading Nativo
Desde o WordPress 5.5, o lazy loading nativo está integrado. O WordPress adiciona automaticamente loading="lazy" to your images. You don’t need a JavaScript-based lazy loading plugin. However, ensure your “above the fold” images (like your logo or hero image) DO NOT have this attribute, as it will delay the Largest Contentful Paint (LCP).
Pode remover o lazy loading da primeira imagem de uma página via functions.php:
add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
static $is_first_image = true;
if ( $is_first_image ) {
$attr['loading'] = 'eager'; // Force immediate load for LCP
$is_first_image = false;
}
return $attr;
}, 10, 3 );
5. Desfragmentação da Base de Dados via phpMyAdmin
Optimization plugins usually feature a “Clean Database” button. You can do this natively at the database level.
- Inicie sessão no painel do seu alojamento e abra o phpMyAdmin.
- Selecione a sua base de dados WordPress.
- Desça até ao fundo, selecione Marcar todos.
- In the “With selected:” dropdown, choose Otimizar tabela.
O MySQL reconstruirá os índices da tabela e recuperará o espaço não utilizado. Faça isto manualmente uma vez por mês.
O Veredito
Optimizing WordPress without plugins isn’t just about saving money on premium subscriptions. It is a philosophy of redução de dívida técnica. Every plugin you don’t install is a security vulnerability you don’t have to patch, a database table you don’t have to clean, and a PHP script your server doesn’t have to execute.
Transfira a carga de trabalho para o servidor (PHP 8.1+, Nginx FastCGI), imponha disciplina no seu wp-config.php, e elimine o inchaço do núcleo usando o seu functions.php. O seu Time to First Byte (TTFB) e os Core Web Vitals refletirão a diferença.



