15 Adımda WordPress Hız Optimizasyonu (Eklentisiz)

İnternet sitesi performansı söz konusu olduğunda, her bayt ve milisaniye önemlidir.

WordPress kendi başına o kadar ağır bir sistem değildir, ancak kullandığınız temalar ve eklentiler, sayfa yükleme süresini yavaşlatabilir. WordPress internet sitenizi hızlandırmak için birçok teknik vardır.

Örneğin:

  • CDN (İçerik Dağıtım Ağı) kullanmak
  • Tarayıcı ve sunucu önbelleğinden yararlanmak
  • Performans açısından optimize edilmiş sunucuda barındırmak
  • Hafif bir tema kullanmak
  • Az sayıda ve hafif eklentiler kullanmak
  • Functions.php’ye ve wp-config.php dosyalarına birkaç satır kod ekleyerek

Bu Yazıdakileri Uygulamadan Öncesi ve Sonrası

oncesi-sonrasi

Eklentisiz WordPress Hız Optimizasyonu Nasıl Yapılır?

Bu yöntemlerin yanı sıra, WordPress’in kendi içinde olan ancak kullanmadığınız fonksiyonları devre dışı bırakarak da sitenizdeki sorgu sayısını azaltarak biraz daha hızlandırabilirsiniz.

Functions.php’ye ve wp-config.php dosyalarına birkaç satır kod ekleyerek yapabileceğiniz bu hız optimizasyonuna hemen başlayalım.

Functions.php Performans ve Güvenlik Optimizasyonu

Functions.php ile hız optimizasyonu yapmak için:

  1. FTP dizininden /wp-content/themes/temaniz/functions.php konumuna gidip dosyayı açın ya da,
  2. WordPress Yönetim Paneli > Görünüm > Düzenleyici‘ye tıklayın ve sağdan functions.php dosyasını seçin.

Uyarı!

Eğer temanıza ait bir “child-theme” kullanmıyorsanız, temanızı güncellediğinizde bu kodların üzerine yazılabilir. Lütfen çalışmaların kalıcı olması için “child-theme” kullanın.

Eğer yeterli bilgiye sahip değilseniz, olası bir kritik hatadan korunmak için “functions.php” dosyanızın bir kopyasını oluşturup saklayın.

1. Sorgu Dizelerini Kaldırmak

İnternet sitenizi yükleme süresi için analiz ettiyseniz, sorgu dizelerini statik kaynaklardan (CSS, JS dosyaları) ortadan kaldırmak için bir öneriyle karşılaşmış olabilirsiniz.

Kaldırılması önerilir.

Dikkat!

Dosyalarda sorgu dizelerinin bulunması CDN’nin dosyaları önbelleğe almamasına neden olabilir; bu nedenle, sağlanan tüm önbelleğe alma avantajlarından yararlanamayabilirsiniz.

Sorgu dizelerini kaldırmak için aşağıdaki kodu ekleyin.

function remove_cssjs_ver( $src ) {
if( strpos( $src, '?ver=' ) )
 $src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

2. RSD Bağlantılarını Kaldırmak

XML-RPC, pingback gibi servisleri kullanmak istiyorsanız RSD (Really Simple Discovery) gereklidir ancak, içeriğinizi yönetmek için pingback veya uzak istemciye ihtiyacınız yoksa aşağıdaki kodu ekleyerek bu gereksiz başlıktan kurtulun.

Kaldırılması önerilir.

remove_action( 'wp_head', 'rsd_link' ) ;

3. WordPress Emojilerini Kaldırmak

Tüm emojiler artık neredeyse bütün tarayıcılarda yerel olarak geliyor. Ekstra sorgu oluşturan emojileri kaldırmanızda hiçbir sakınca yok.

Kaldırılması önerilir.

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' );

4. Kısa Bağlantıları Kaldırmak

WordPress 3. sürümden başlayarak WordPress, başlık koduna kısa bağlantı (internet adresinin daha kısa bağlantısı) ekledi.

Örneğin:

<link rel='shortlink' href='https://egebese.com/?p=21' />

Herhangi bir işlev için kısa bağlantı kullanmıyorsanız, aşağıya ekleyerek bunları kaldırabilirsiniz.

remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);

Kaldırılması önerilir.

5. Gömülüleri Kaldırmak

WordPress, 4.4’te herhangi bir sitenin WordPress gönderisini uzaktan yerleştirmesine izin veren oEmbed özelliklerini tanıttı ve böyle görünüyor.

Kaldırılması önerilir.

Aşağıdaki kodu ekleyerek, başkalarının blog yayınınızı embedlemesini engelleyecek ve ilgili JS dosyasını yüklemeyi devre dışı bırakacaktır. Avantajı siteye ekstra sorgu binmemesidir.

wordpress-oembed-kaldirma
function disable_embed(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'disable_embed' );

6. XML-RPC’yi Kaldırmak

Bir yazıyı yayınlamak/düzenlemek/silmek, yorumları düzenlemek veya dosya yüklemek için WordPress API (XML-RPC) servisini kullanmıyorsanız kapatmanızda hiçbir sakınca yok. Ayrıca XML-RPC’nin etkinleştirilmiş olması ve düzgün şekilde güvenli hale getirilmemiş olması DDoS ve bruteforce saldırılarına neden olabilir.

Kaldırılması önerilir.

add_filter('xmlrpc_enabled', '__return_false');

7. WordPress Sürümünüzü Gizlemek

Bu adım, sitenizin performansına hiçbir etki etmese de bilgi sızıntısı güvenlik açığını azaltmaya daha çok yardımcı olur. Varsayılan olarak, WordPress, kaynak koda ve HTTP başlığına sürüm ayrıntılarıyla birlikte meta ad oluşturucu ekler. Bu da hackerların güvenlik açığı denemelerinde işlerini kolaylaştırır.

Kaldırılması önerilir.

remove_action( 'wp_head', 'wp_generator' ) ;

7. WLManifest Bağlantısını Kaldırmak

Muhtemelen Windows live writer nedir bir bilginiz yok. Eğer Windows live writer kullanmıyorsanız aşağıdaki kodu ekleyerek bağlantıyı kaldırabilirsiniz.

Kaldırılması önerilir.

remove_action( 'wp_head', 'wlwmanifest_link' ) ;

7. Self PingBack Özelliğini Kaldırmak

Blogunuzun bir yazısından, diğer yazıya bir iç linkleme yaptığınızda yorumda bir pingback bildirimi gelir. Bunun kesinlikle hiçbir anlamı yok. Pingback olayı sadece, yazdığınız bir içerikte bağlantısını eklediğiniz siteye bildirim göndermek için kullanılır. Kaldırmak için aşağıdaki kodu ekleyebilirsiniz.

Kaldırılması önerilir.

function disable_pingback( &$links ) {
 foreach ( $links as $l => $link )
 if ( 0 === strpos( $link, get_option( 'home' ) ) )
 unset($links[$l]);
}
add_action( 'pre_ping', 'disable_pingback' );

8. Heartbeat API Kaldırmak

WordPress, sık sık admin-ajax.php’yi çağırarak tarayıcı ve sunucu arasında aktif iletişim kurmak için Heartbeat API’sini kullanır. Bu, genel sayfa yükleme süresini yavaşlatabilir ve paylaşılan barındırmada ise CPU kullanımını artırabilir.

Heartbeat API’si, yazı editöründen bir gönderi oluşturduğunuzda veya gönderiyi düzenlediğinizde, o gönderiyi periyodik olarak otomatik kaydetme işlevi sağlar.

Heartbeat API kullanma zorunluluğunuz yoksa aşağıdaki kodu ekleyerek devre dışı bırakabilirsiniz. Bu kod Heartbeat API’ını tamamen iptal eder. Bazı eklentiler API’ın otomatik çalışma sürelerini kontrol ederek devredışı bırakmadan optimize etme imkanı sunar. (Eklentiye gitmek için: https://wordpress.org/plugins/heartbeat-control/)

Kaldırılması önerilir.

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

9. Contact Form 7’yi Gereksiz Sayfalarda Kapatmak

Contact Form 7 güzel bir eklenti fakat, iletişim formunun olmadığı sayfalara ekstra stil ve script dosyası ekliyor. Bu da gereksiz sorgu ve yük oluşmasına neden oluyor. Bunu kapamak çok kolay.

Aşağıdaki kodu functions.php dosyanıza ekleyerek, gerekli stil ve script dosyalarının sadece formun olduğu sayfalara çağrılmasını sağlayabilirsiniz.

# Contact form 7 script ve stillerini kapama
function conditionally_load_contactform7() {
if (strpos(get_the_content(null, false, get_post()), "[contact-form-7") === false) {
wp_dequeue_script('contact-form-7'); # Dequeue scripts.
wp_dequeue_style('contact-form-7'); # Dequeue css.
}
}
add_action( 'wp_enqueue_scripts', 'conditionally_load_contactform7' );

Wp-config.php Performans ve Güvenlik Optimizasyonu

Wp-config.php ile hız optimizasyonu yapmak için:

FTP dizininden ana dizinden wp-config.php dosyasını açın

Uyarı!

Eğer yeterli bilgiye sahip değilseniz, olası bir kritik hatadan korunmak için “wp-config.php” dosyanızın bir kopyasını oluşturup saklayın.

10. İçerik Versiyonlarını Kapatın veya Limitleyin

Varsayılan olarak, WordPress yazınızdaki veya sayfanızdaki her düzeltmeyi otomatik olarak kaydeder. Bu özellik ne kadar faydalı olursa olsun, MySQL Veritabanını gereksiz verilerle şişirecek, sonunda onu işlemek için çok fazla kaynak gerektirecek kadar büyük olacak ve böylece siteyi yavaşlatacaktır.

Limitlemek için:

define( 'WP_POST_REVISIONS', 2 ); // en fazla 2 adet versiyon kaydeder

Tamamen kaldırmak için:

define( 'WP_POST_REVISIONS', false );

Ben genelde en fazla 2 adet versiyon kaydetmesini tercih ediyorum.

11. Oto-Kaydetme Süresi

Bir gönderiyi düzenlerken, WordPress, düzenlerken gönderideki düzeltmeleri otomatik olarak kaydetmek için Ajax’ı kullanır. Otomatik kayıtlar arasında daha uzun gecikmeler için bu ayarı artırmak veya değişiklikleri asla kaybetmemek için ayarı azaltmak isteyebilirsiniz. Varsayılan kaydetme süresi 60 saniyedir.

Eğer Heartbeat API’ı devredışı bırakmadıysanız, otomatik kaydetme gibi bir fonksiyonu limitleyebilirsiniz.

define( 'AUTOSAVE_INTERVAL', 160 ); // saniye bazında süredir

12. Admin ve Kullanıcı Girişlerinde SSL Zorlamak

Yönetici alanınızı bu kolay SSL tanımıyla güvence altına alabilirsiniz. Bu özellik, oturum açma işlemlerini ve yönetici alanını güvenli hale getirmek istediğinizde kullanışlıdır, böylece hem parolalar hem de tanımlama bilgileri hiçbir zaman açık bir şekilde gönderilmez.

define( 'FORCE_SSL_ADMIN', true );

13. Ayrılan RAM Miktarını Yükseltme (Wp-Memory)

Bu ayar, PHP tarafından kullanılabilecek maksimum bellek miktarını belirlemenizi sağlar. Bu ayar, “İzin verilen bellek boyutu bayt bitti” gibi bir mesaj almanız durumunda gerekli olabilir. Eğer PHP.ini ayarlarında PHP için 64MB tahsis edilmişse, WordPress gerekirse 64MB’nin tamamını otomatik olarak kullanacağı için bu değeri 64M’ye ayarlamaya gerek yoktur.

define( 'WP_MEMORY_LIMIT', '128M' );

Wp-admin için normal işlemlerden daha fazla bellek gerekir. Wp-admin’de, WP_MAX_MEMORY_LIMIT tanımlanarak bellek WP_MEMORY_LIMIT’ten artırılabilir veya azaltılabilir. Böylelikle wp-admin yavaşlamaları bir miktar çözülebilir.

define( 'WP_MAX_MEMORY_LIMIT', '256M' );

14. Cron ve Cron Sıklığını Ayarlamak

Bir ziyaretçi sitenizi her ziyaret ettiğinde, bir Cron tetikleyicisi gibi davranır ve yapılacak şeylerin bir listesi için sunucunuza ping atar. Eğer zamanlanmış gönderiler gibi şeyleri kullanıyorsanız bu kodu kullanmayın.

define( 'DISABLE_WP_CRON', true );

Eğer çok yüksek trafiği olan bir siteniz varsa, Cron işlemlerinin sıklığını ayarlayabilirsiniz. Genelde hosting sağlayıcıları, paylaşımlı hostinglerde en fazla 15 dakikada 1 olacak Cron işlerine izin verir. Eğer böyle bir limitlemeniz yoksa, aşağıdaki kod ile ayarlayabilirsiniz.

define( 'WP_CRON_LOCK_TIMEOUT', 60 ); // saniye bazında süredir

15. Otomatik Veritabanı Optimizasyonunu Ayarlamak

WordPress kendi içerisinde, otomatik olarak veritabanı optimizasyonu yapabilmenizi sağlar. Aşağıdaki kodu ekleyerek otomatik veritabanı optimizasyonunu aktifleştirebilirsiniz.

define( 'WP_ALLOW_REPAIR', true );

Benim Kullandığım Functions.php ve Wp-config.php Ayarları

Functions.php Ayarlarım

function disable_pingback( &$links ) {
 foreach ( $links as $l => $link )
 if ( 0 === strpos( $link, get_option( 'home' ) ) )
 unset($links[$l]);
}
add_action( 'pre_ping', 'disable_pingback' );

function remove_cssjs_ver( $src ) {
if( strpos( $src, '?ver=' ) )
 $src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

remove_action( 'wp_head', 'rsd_link' ) ;
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_action('wp_head', 'wp_shortlink_wp_head', 10, 0);

function disable_embed(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'disable_embed' );

add_filter('xmlrpc_enabled', '__return_false');
remove_action( 'wp_head', 'wp_generator' ) ;
remove_action( 'wp_head', 'wlwmanifest_link' ) ;

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

# Contact form 7 script ve stillerini kapama
function conditionally_load_contactform7() {
if (strpos(get_the_content(null, false, get_post()), "[contact-form-7") === false) {
wp_dequeue_script('contact-form-7'); # Dequeue scripts.
wp_dequeue_style('contact-form-7'); # Dequeue css.
}
}
add_action( 'wp_enqueue_scripts', 'conditionally_load_contactform7' );

Wp-config.php Ayarlarım

define( 'WP_POST_REVISIONS', false );
define( 'AUTOSAVE_INTERVAL', 160 ); // Seconds
define( 'IMAGE_EDIT_OVERWRITE', true );
define( 'FORCE_SSL_ADMIN', true );
define( 'WP_MEMORY_LIMIT', '2048M' );
define( 'WP_MAX_MEMORY_LIMIT', '2048M' );
define( 'WP_CRON_LOCK_TIMEOUT', 60 );
define( 'WP_ALLOW_REPAIR', true );

Kapanış

Wp-config ve functions.php dosyaları üzerinden yaptığımız bu ayarlamalar çok ciddi etkilere sahip olmasa bile yine de sunucunuzun büyük anlamda rahatlamasını sağlayacaktır ve sitenizdeki sorgu sayısını azaltarak açılış hızınızı biraz daha hızlandıracaktır.

Yukarıda yer alan yöntemleri mutlaka yedeklerinizi alarak yapın. Eğer konuyla ilgili bilginiz yoksa yorumlardan bana sorabilirsiniz.

Ücretsiz Dijital Pazarlama Kaynakları Al!

Eposta bültenime abone ol ve +2.000 kişilik bir topluluğun parçası olarak ücretsiz dijital pazarlama e-kitapları, dersleri gibi kaynaklara eriş!

Abone olduğun için teşekkürler!

Bir şeyler yanlış gitti.

Bunları da beğenebilirsiniz:

19 thoughts on “15 Adımda WordPress Hız Optimizasyonu (Eklentisiz)”

  1. Bu gerekli bilgilerin için teşekkürler. Benim gibi denemeye çalışanlar umarım yedek almayı unutmazlar. Yoksa baya uğraşırlar.

    1. Rica ederim, evet mutlaka yedek almalı yapanlar. Genelde problem olmuyor ama olursa deneyimsiz kullanıcılar için zorlu bir süreç olabilir düzeltmek.

  2. Gerçekten çok kapsamlı ve detaylı bir konu olmuş. Genel olarak önceden yaptığım ayarlamalar olsa da ilk kez gördüğüm ve uyguladığım yöntemler de oldu. Herkese dosyalar üzerinde uygulama yaparken yedek almalarını öneririm ne olur ne olmaz:)

  3. WordPress hız optimizasyonu yazınız ile aslında, piyasada verilen ücretli hizmetlerin bir galası gibi olmuş. Bu yazıdaki yönergeleri takip ederek ücretsiz bir şekilde de yapabiliyormuşuz.

    1. Teşekkür ederim görüşünüz için, amacım sadece eklenti kullanmadan gereksiz servisleri kapatarak sitedeki hız problemini bu yolla da çözülebileceğini göstermekti.

  4. Sitelerin hızları oldukça önemli google ve diğer arama motorları açısıdan. Eskiden önemli idi, şimdi çok önemli çünkü okuyucunun sayısı azalıyor, kaynak sayısı çoğalıyor… Hal böyle iken, özellikle daha az sorgu üretmek hız açısından oldukça önem arz ediyor. Yazı içerisinde ki kıymetli bilgiler için Teşekkürler.

  5. Wordpres ilk kurulum sonrası ne kadar hızlı gibi görünse de içerik sayısı arttıkça hız optimizasyonuna gerçekten ihtiyaç duyuyor, detaylı bilgilendirme için teşekkürler.

  6. Oldukça uzun ve Optimize konusunda tecrübelerinin paylaşıldığı bir yazı olmuş. SEO etkileyen faktörlerden birisi olan web sitesinin açılış hızı, tüm site sahiplerinin önem vermesi gereken bir konu

  7. Güzel bir anlatım olmuş çoğu şeyi bilmiyordum ama tek tek uğraşmak istemeyenlere tavsiyem wp rocket eklentisi wordpress sitelerinde en iyi cache eklentisi desen olacaktır onu kullanmalarını tavsiye ederim.

  8. Sunucumda Litespeed cache eklentisi kurulu olmasına rağmen performans problemleri yaşıyordum. Makalenizdeki ipuçları sayesinde google page speed değerimde harika bir artış yakaladım. bazı arkadaşlar yorumlarda eklenti tavsiyesinde bulunmuşlar. bence kodu temiz tutarak performansı arttırmak çok daha stabil bir çözüm.
    saygılarımla.

Yorum bırakın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top