Giriş
Bazen sitenin açılma süresi can sıkabiliyor. Bazen sitede az ziyaretçi olmasına rağmen CPU ve RAM tüketimi can yakabiliyor. Bazı şeyler öyle önemli ki aynı özelliklere sahip paylaşımlı bir hosting’de bulunan 2 sitede izin verilen CPU sınırının dolduğu ziyaretçi sayısı değişebiliyor.
Aslında bir siteyi bir taşıt olarak düşünebilirsiniz. Bu taşıtın sırtına bir seferde ne kadar çok şey yüklersen bu sefer sırasında o kadar yavaş olacaktır. Yani bizim aslında siteyi hızlandırmak adına yapacağımız şeylerin tamamı bu yükü azaltmaya çalışmaktır.
Hizmet aldığınız firma
Bunların dışında sitenizin bulunduğu hosting firması da sitenin hızı konusunda bir etkendir. Bu kriter sunucu sahiplerinde geçerliliği kendilerine bağlıdır. Tamamen kendi elindedir. Ben şimdilik sadece bir hosting hizmeti alan kişiler üzerinden ilerleyeceğim. Hosting firmaları bir sunucuyu belli sayıda siteyi barındırır. Bu sayı genelde 10’dur ve size %10’luk bir CPU düşer. Bazı firmalar %25 CPU desteği verebiliyor. Tabi bu orana fazla takılmamak gerekiyor. Olaya bu sunucuların genel nitelikleri de eklenince konu bambaşka bir yere taşınıyor. Genelde firmalar bu konuda çok fazla detay vermezler, hatta CPU ve RAM konusunda bile bilgi vermiyor. Tabi bir böyle bir hizmet firmayı yapan şeyler bunlar değil. Bir bu kadar önemli konu olan güvenlik. Hizmet aldığınız firma bu paylaşımlı hosting’leri bol bol CPU , RAM tüketecek spam botlardan ne derece koruyor? Böyle spam botlara karşı veya gereksiz yere CPU ve RAM tüketen diğer etkenlere karşı ne gibi etkileri var? İşte bunların hepsini toplayınca hizmet veren firmanın kalite derecesi ortaya doğuyor. Yani toparlayacak olursak yapıcağınız firma tercihi performansınızı her şeyinizi etkileyecek.
Birçok firmada deneyimim oldu. Ben 3 firmanın verdiği hizmetten memnun kaldım. Bunlar İxirhost, Hozzt ve Turhost oldu. İxirhost, bazı konularda katı olsa bile iyi bir hizmet veriyor. Bu üçünden en iyisi Hozzt diye düşünüyorum. Hizmetleri gerçekten çok iyi ve güvenlik konusunda baya iyiler ki bazen sizin bile ip adresiniz banlanabilir. (Evet gerçekten öyle). Turhost ile henüz yeni tanıştım. Detaylı bilgi vermeleri çok iyi ve her şeyleri aşırı güncel.
Firma seçimi konusunun üzerinde çok durmak istemiyorum. Seçim yaparken çok dikkatli olun. Hizmet alacağınız firmanın referanslarını inceleyin, tartışma alanlarında incelediğiniz firma hakkında söylenenlere bakın.
Hosting seçimi yapıldı. Wordpress kuruldu. Eğer Çin’e hitap etmiyorsanız bu ülkeyi kompile banlamanızı öneriyorum. Çünkü buradan gelecek %99 trafik bot olacak. Bol bol kaynak tüketecek. Sitenizi boş yere yoracak.
Sitenizin hızını ve CPU kullanımını azaltacak işlemler yapmaya başlamadan önce gerekli yedeklemeleri yapmayı unutmayın. Ek olarak işleme başlamadan önce Google Pagespeed sayfanızdan sitenizin aldığı puanı hafızanızda tutun. İşlem bittikten sonra tekrar bakın.
Veritabanı
Uzun zamandır WordPress kurulu bir siteniz varsa veritabanlarını optimize etmekte fayda olabilir. WP-Optimize eklentisini indirin. Başıboş duran tabloları çok iyi temizliyor fakat bir işlem yapmadan önce veritabanınızı yedeklemekte fayda var. Ek olarak phpmyadmin kısmından da veritabanını optimize edebiliyorsunuz. Henüz bunu hiç denemedim.
Ekleme (26.11.2015): WordPress 2.9 ile WordPress kendi içerisinde bir veritabanı onarma sistemi varmış. Bunu aktif hale getirmek için wp-config.php dosyasına
define('WP_ALLOW_REPAIR', true);
kodu ekleyin. Daha sonra “http://www.seninsiten.com/wp-admin/maint/repair.php” adresine gidin. İşlem bittikten sonra eklediğiniz bu kodu mutlaka kaldırın.
Seçilen tema ve etkisi
Kullanacağınız tema sitenizin hızında etkilidir. Eğer kendiniz yazdıysanız temiz bir şekilde kodlamaya özen gösterin, eğer satın alıyorsanız da bu konudaki geri dönüşlerini inceleyin. Temanızda bulunan (anasayfa diyelim) yazı ve bunun yanındaki bileşen sayısı sitenizin açılış hızını etkiler. O yüzden bir sayfada çok fazla yazı göstermeyin. Mesela en fazla 10 tane gösterin. Devamı için sayfa değiştirilmek gereksin. Bileşenleri de ölümüne donatmayın. Her alanda sadeliği tercih edin.
Temanıza sonradan eklediğiniz kodlar. Sayaç, list gibi eklenen ve kesinlikle direk silinmesi gereken kodlardır. Bunlar sadece sitenize zarar verecek olan etkenlerdir. Bu tarz kodlar eklemişseniz ise direk kaldırmanızı öneririm.
Yazınıza ekleyeceğiniz görselleri başka sitede barınan bir görseli kullanmak sizin için yararı yoktur. Hem karşı taraf için kaynak tüketimine yol açar ek olarak siteniz daha fazla çaba sarf eder. Bunun yerine görselleri kendi sitenizde barındırın.
Logo gibi her sayfada yüklenen görselleri optimize edin. Bu görselleri optimize etmek her sayfanın açılış hızını etkileyecektir. Bazı eklentiler var. Siteye görseller yüklenirken bunları optimize eden tarzda. Ben böyle eklentilerin kullanılmasını önermiyorum. Bunun yerine görselleri sitenize yüklemeden önce optimize edin. Ben Riot adında programı öneriyorum. (Riot image diye arama yaparsanız bulabilirsiniz)
İframe yoluyla gelen yazıların sonuna eklenen sosyal beğeni butonları da sitenizi etkiler. Kullanılmayanları kaldırın. Örneğin sadece Facebook, Twitter ve Google + kalsın. Bütün sosyal medya araçlarının bulunmasının lüzumu yok.
Eklentiler
WordPress’de en çok kaynağı tüketen eklentilerdir. Her eklenti bir yüktür ve siz eklenti yüklemeden önce 2 kere düşünmeniz gerekir. Bir eklenti gerçekten gerekli değilse, kesinlikle gerekmiyorsa kullanmayın. Eğer elle kendiniz yapabileceğiniz bir şey ise bunu eklenti ile sağlamayın. Örneğin favicon eklemek. Bunun için bir eklenti indirmeyin. İnternetten araştırın ve kendiniz yapın. Biraz manual takılın. Eklentileri yükle sil çok yapmayın. Eğer bir eklentiyi denemek istiyorsanız bilgisayarınıza WordPress kurup denemeleri orada yapın. Eğer istediğiniz sonucu alırsanız sitenize ekleyin. Eklentileri yükle sil yapsanız bile veritabanında şişme yapabiliyor ve zamanla veritabanı kontrolden çıkabiliyor. Bu nedenden ötürü sorguların yavaş olması veya sonsuz sorgu gibi sorunlar çıkabiliyor.
Bazı eklentiler olmazsa olmaz. Bir seo eklentisi. Ben All in One Seo kullanıyorum. Bir blog için idealdir. Yoast – bana kalırsa – eticaret gibi gelişmiş ayarlara ihtiyacı olan siteler için uygundur. Bir çerez eklentisi. Çerez eklentilerinden birazdan daha detaylı olarak bahsedeceğim. Birden çok çerez eklentisi var. Kimisi detaylı, kimisi tek tıkla istediğin sonucu verebiliyor. Ben çerez eklentisi şuan gerek duymadım ama belli kitleye hitap eden kişiler için kesinlikle şart diyebilirim. Bir diğer şart olan eklenti; Regenerate Thumbnails. Bu eklenti gerçekten ilk 2 eklenti kadar önemli olduğunu düşünüyorum. Görselleri sınıflara göre parçalıyor. Mesela öne çıkan görsel alanı %75. Orjinal görseli bu alana göre parçalıyor. Yine örnek vererek devam ediyorum. Yüklediğiniz görsel çözünürlüğü 3000px olsun. Bu görseli tasarımınızın sınıflarına göre parçalıyor. gorsel-800-800.jpg gibi. Bu eklenti sitenizin performansını doğrudan etkileyecek.
Bazı eklenti türleri vardır ve ben bunları hiçbir şekilde önermiyorum. İlk başta istatistik eklentileri. Yapılacak en büyük hatadır. Her şeyi yiyip bitirecek eklenti türüdür. Bunun yerine Google Analytics kullanmanızı öneririm. Yedekleme eklentilerini de kullanmayın. Yedeklemeleri Cpanel veya Plesk panel üzerinden yapın. Bazı güvenlik eklentileri mevcut. Bunlar ne kadar güvenlik adında olsalar bile veritabanını deli gibi şişirirler ama ben kullanacağım diyorsanız da ayarları iyi yapın.
Yukarıda bahsetmeyi unuttuğum ve kesinlikle kullanmanızı önerdiğim eklenti Akismet’tir. Bu eklenti spam yorumlara karşı harika koruyor ve bu konuda en iyi denilebilir.
Çerezler
Bir diğer can alıcı nokta çerez eklentisidir. Bildiğim kadarıyla 3 4 tane çerez eklentisi var. Ben bunlardan sadece ikisinden birinin kullanmasını öneriyorum. W3 Total Cache veya WP Fastest Cache. Ben WP Fastest Cache kullanmayı tercih ediyorum. Kullanımı daha basittir fakat W3 çok daha detaylıdır. Her şeyiyle kontrolü elinize verir. Çerez eklentileri ne yapar? Neden bu kadar etkili bir yöntemdir? Çerez eklentileri sitede bulunan sayfaları statikleştiren sistemlerdir. PHP ve veritabanını aradan çıkarmayı başaran bu eklentilerin performans da büyük etkileri vardır.
WP Fastest Cache eklentisinin nasıl kurulduğunu anlatmayacağım. Oldukca basittir. W3 Total Cache üzerinde çok deneyimim olmadı fakat başlangıç için bir ayar import edebilirsiniz. Buraya tıklayıp hazır ayar dosyasını indirin. General Settings sekmesine tıklayın . Ayar sayfasında aşağıya doğru inin “İmport/Export settings” kısmını bulacaksınız. Buradan indirdiğiniz dosyayı seçip “Upload” deyin. Eğer Preview mode açık ise bunu kapatın.
CDN
Çok yüksek trafik alan sitelerin en büyük kurtarıcısıdır. CDN statik içeriklerin başka bir lokalasyonda barınmasıdır . CDN bu statik içeriklerinizi (js, css dosyaları gibi) en hızlı bir şekilde açılabilmesi için üretilmiş teknolojidir. Ben Maxcdn kullanımını anlatacağım. Maxcdn yerine Amazon’un sunduğu hizmetleri de kullanabilirsiniz fakat Amazon pazarlamanın ardından API’si ile sizi yalnız bırakıyor. Yani gerisi size kalıyor. Maxcdn ile kolaylıkla entegre edebilirsiniz. WP fastest cache eklentisiyle direk entegre edilebilmekte. Maxcdn resmi sitesinde nasıl bağlandığı güzelce anlatılıyor.
Minify
Yüklediğiniz çerez eklentisi bu işlemi kendisi yapıyor fakat biz yine de garanti olması adına manual olarak yapalım. Temanızın içerisinde bulunan Js ve css dosyalarındaki kodları küçültelim.
Js kodları için kullanmanızı önerdiğim küçültme sitesi: http://jscompress.com/
Css kodları için kullanmanızı önerdiğim küçültme sitesi: http://cssminifier.com/
10 20kb’da olsa yararı olacak küçültmedir.
Çöplüğü zamanlayın
Bildiğiniz üzere WordPress’de bir yazıyı çöp kutusuna attınızda doğrudan silinmiyor. Bunların silinmesi için zamanlayın. wp.config.php dosyasına aşağıdaki kodu ekleyin.
define ('EMPTY_TRASH_DAYS', 7);
Yazıdaki zaman
Bir de bir yazıyı yazarken belli noktalarda taslaklar alır ve bir yazı uzun sürede yazıldıysa duraklar çok fazladır. Böyle durumlar veritabanını şişirmektedir. Buna belli nokta sınırı koyabiliriz. Yine wp-config.php dosyasını açalım ve aşağıdaki kodu ekleyelim.
define( 'WP_POST_REVISIONS', 3 );
Sosyal medya ikonları ve görselleri
Sosyal medya araçları arttıkca bu ikon ve görsellerin sayısı arttıyor. Bunlar bir de her sayfada yükleniyor. Biraz bu görsellerin büyük olduğunu varsayalım. Biri 10kb olsa. 5 farklı alan olsa. 50kb eder. Sayfa başına 50kb. Text bağlantı olarak bırakmak daha iyi olabilir. Eğer görsel bir görüntü istiyorsanız css kodları sağlayın derim.
Gzip Compression özelliğini açın
Bu özelliği WordPress paneli aracılığıyla açabilirsiniz. www.seninsiten.com/wp-admin/options.php bağlantısına gidin ve “gzipcompression” alanını bulup “0” değerini “1” yapın.
Temanızın sorgularını azaltın
Bazı php kodları aracılığıyla veritabanından bazı bilgiler tema dosyaları tarafından çağırılır. Bu sorguları azaltmak mümkün. Şimdi temamızın header.php (üst kısım kodları. Bu sizin temanızda farklı isimde olabilir). Biz head kodları arasındaki kodları düzenleyeceğiz. Ben aşağıya örnek bir kod atacağım. Bu şablonu kullanarak kendi temanızın kodlarını düzeltin.
Önceki hali:
-
Sonraki hali:
Pikshub
Sitenizin mobil halinde bileşenler açılmasın
Mobil hali nasıl hızlandırırım diye uzun uzun düşündüm (başka bir site). Genelde bileşenler (widgets) mobilde içeriğin alt kısmına iner ve bileşenlerde o kadar çok şey vardır ki mobildeki hızda büyük etkendir. Ben bileşenleri mobil halde tamamen görünmez kıldım. Bunun için css kullandım.
@media screen and (max-width: 600px) {
.widget {
display: none;
}
}
Widget sınıfı yerine sizin bileşenleri taşıyan sınıfı yazın. Bunu öğrenmek oldukca kolay. Bileşenlerin olduğu noktaya gidip “Öğeyi denetle” deyin. Bileşenler taralı alan olursa seçili sınıftayken doğru sınıf üzerinde olduğunuzu anlayabilirsiniz.
Bir yol olarak da mobildeki css kodları ile masaüstü bilgisayardaki css kodları ayırabilirsiniz. (Bu şekilde denemedim henüz) Örnek çağırma:
Geri bildirim ayarını kapatalım
Ayarlar sekmesinden “Tartışma” kısmına girin. “Diğer bloglardan yeni makaleler için bağlantı bildirimlerini (geri bildirimler ve geri izlemeler) etkinleştir” ve “ Yazıda bağlantı verilen blogları haberdar etmeyi dene” özelliklerini kapatın.
Hotlink
Yüklediniz görsellerin başka sitelerde kullanılmasını engelleyebilirsiniz. Htaccess dosya aracılığıyla bunu yapabilirsiniz. (Cpanel’den de yapılabiliyor)
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?seninsiten.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?seninsiten2.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://seninsiten.com/hotlink.png [NC,R,L]
Yukarıdaki kodu .htaccess dosyasına ekleyin. Seninsiten yazan kısma sitenizin adını girin. Eğer sitenizdeki görselleri bir diğer sitenizde gözükmesini istiyorsanız onu da diğer satıra ekleyin. Eğer yoksa o satırı silin. “hotlink.png” olan şey de engellenmesi halinde o görselin yerine çıkacak görseldir. 1 2kb’lık bir görseli kullanın. Mesela sadece sitenizin adı yazan bir görsel.
Aktif olmayan eklentiler
Aktif olmayan eklentileri tamamen sitenizden kaldırın. Bunu eklentiler sekmesinden yapabilirsiniz.
Tarayıcıların önbellekleme özelliğinden yararlanın
Çerez eklentiniz eğer bunu htaccess dosyanıza eklediyse tekrardan eklemenize gerek yoktur. Çerez eklentinizde ayarları yaptıktan sonra htaccess dosyanıza bakın. Eğer yoksa aşağıdaki kodu ekleyin.
## EXPIRES CACHING ##
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
## EXPIRES CACHING ##
Javascript kodlarını footer’a taşı
Bunu kaynak kodlara bakarak elinizle düzenleyebilirsiniz. Peki bunun ne gibi bir faydası vardır? Html hiyerarşi bir düzeni vardır. Yukarıdan aşağıya doğru okunur ve sayfa böyle yüklenir. Javascript kodlarının en altta olması onların en son yükleneceği anlamına gelir. Bu taşıma işlemini temanızın functions.php dosyasına bir kod ekleyerek otomatik olarak yapabilirsiniz.
/**
* Butun javascript dosyalari footer alanina
*
* Bu kod javascript kodlarinin footer alaninda yuklenmesini saglar
*/
function footer_enqueue_scripts() {
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);
}
add_action('after_setup_theme', 'footer_enqueue_scripts');
Bu işlemi daha gelişmiş biçimde yapan bir eklenti de vardır: Scripts to footer
Eticaret siteleri ve optimize
Eticaret sitelerinde çerez eklentileri bazen problem yaratabiliyor. Ödeme, sepet gibi sayfaları hariç tutsanız bile eğer multi para birimi var ise dönüşümlerde hep sıkıntı oluyor. Ben o yüzden sadece css ve js kodlarını sıkıştıran bir eklenti arayışına girdim. Autoptimize adında güzel bir eklenti buldum. Bu eklenti css ve js kodlarını çok iyi optimize ediyor.
Global JS
Bazı JS dosyaları CDN hali açık olarak yayınlanmakta. Temanızda kullanılan bir JS dosyası açık olarak paylaşılmış olabilir. CDNJS adlı siteden arayıp bulup daha sonra temayı güncelleyebilirsin.
Heartbeat API
Oturum açan kullanıcı browserı ile sunucu arasında düzenli iletişimi sağlar.Browser’dan giden bu çağrılar sunucuya “wp-admin/admin-ajax.php” isteği olarak ulaşır ve ciddi bir cpu tüketine neden olur. Aşağıdaki kodu temanızın functions.php dosyasına ekleyin.
// Heartbeat-Schnittstelle komplett abschalten
add_action('init', 'stop_heartbeat', 1);
function stop_heartbeat()
{
wp_deregister_script('heartbeat');
}
// Heartbeat-Schnittstelle außerhalb der Beiträge abschalten
add_action('init', 'stop_heartbeat', 1);
function stop_heartbeat()
{
global $pagenow;
if ($pagenow != 'post.php' && $pagenow != 'post-new.php') wp_deregister_script('heartbeat');
}
WP-CRON
Ben bir şey zamanlamam. WP-cron ihtiyacım yok, kullanmıyorum diyorsan onu kapatabilirsin. wp-config.php dosyasına aşağıdaki kodu ekleyin.
define('DISABLE_WP_CRON', 'true');
Logonu küçült
Logo her sayfada olan ve yüklenen bir obje. Bu dosya ne kadar küçük ise o kadar iyidir. Base64 yapısına dönüştürmeyi öneriyorum. CSS ile logonuzu çağırabilirsiniz alana. Önerdiğim dönüştürüye gitmek için tıklayın.
Kaynak: WordPress site hızlandırma ve CPU kullanımını azaltma yöntemleri