Wordpress GTmetrix Hataları Ve Çözümleri

Öncelikle merhaba herkese. Yine düzenli yazı gireceğim diyip sonradan yoğunluk ve benzeri nedenlerle sözümde durumadım. O yüzden artık düzenli yazı gireceğim demek istemiyorum . Arada sırada paylaşımlarım olacak ne sıklıkla belli değil sadece. Çok uzatmadan konumuza geçelim. Bir zamanlar optimizasyon hizmeti verirken yabancı kaynaklardan bulduğum yararlı kodları arşivlemiştim. Artık bunları paylaşma zamanı geldi. Güzel bir araştırma ile bulabileceğiniz kodlar aslında ben sadece size kendi topladıklarımı sunuyorum.

Enable Gzip Compression – .htaccess 

[php] <IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule> [/php]

Enable Keep-Alive – .htaccess

[php] <IfModule mod_headers.c> Header set Connection keep-alive </IfModule> [/php]

Gravatar Alt Etiket Sorunu – functions.php

[php] function replace_content($text) { $alt = get_comment_author($id_or_email); $text = str_replace(‘alt=\’\”, ‘alt=\”.$alt.’\”,$text); return $text; } add_filter(‘get_avatar’,’replace_content’); [/php]

Leverage Browser Caching – .htaccess

[php] ## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/x-javascript "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType image/x-icon "access plus 1 year" ExpiresDefault "access plus 1 year" </IfModule> ## EXPIRES CACHING ## [/php]

Remove Query Strings from Static Resources – functions.php

[php] /*Remove query strings*/function ewp_remove_script_version( $src ){ return remove_query_arg( ‘ver’, $src ); } add_filter( ‘script_loader_src’, ‘ewp_remove_script_version’, 15, 1 ); add_filter( ‘style_loader_src’, ‘ewp_remove_script_version’, 15, 1 ); /*Remove query strings*/ function _remove_script_version( $src ){ $parts = explode( ‘?’, $src ); return $parts[0]; } add_filter( ‘script_loader_src’, ‘_remove_script_version’, 15, 1 ); add_filter( ‘style_loader_src’, ‘_remove_script_version’, 15, 1 ); [/php]

Specify a Vary Accept-Encoding Header – .htaccess

[php] <IfModule mod_headers.c> <FilesMatch "\.(js|css|xml|gz)$"> Header append Vary: Accept-Encoding </FilesMatch> </IfModule> [/php]

Defer Parsing of Javascript – functions.php

[php] function defer_parsing_of_js ( $url ) { if ( FALSE === strpos( $url, ‘.js’ ) ) return $url; if ( strpos( $url, ‘jquery.js’ ) ) return $url; return "$url’ defer "; } add_filter( ‘clean_url’, ‘defer_parsing_of_js’, 11, 1 ); [/php]

Javascript ve Css Dosyalarını Footer’a Taşımak  – .functions.php

[php] 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 ); [/php]

Bazı Öneriler

  • Resimleriniz çok önemli . Zaten resimleri daha önce optimize etmediyseniz bu her türlü analiz siteleri size hata verecektir.  Resimleri kesinlikle optimize edin. Bunun için En Kolay Website Optimizasyon konulu makaleme bakabilirsiniz.
  • Aynı zamanda resimleriniz çok ise kullanıcıların sitenize hızlı ulaşması için lazy load eklentisini kullanmanızı öneririm.
  • Wordpress yorum ayarlarında smiley yani emojileri kapatmanızı öneririm.
  • Temanızda gereksiz sorgu olmasın. Mesela site başlığını php ile çekmek yerine kendiniz yazabilirsiniz. Bu sorgu sayısını azaltacaktır.
  • https://kraken.io/ -> ftpden bütün resimlerinizi sürükle bırak ile bırakıp sonra optimize edilmiş halini toplu zip halinde indirebileceğiniz bir resim sıkıştırma servisi. Kısaca wordpress toplu resim optimize etmesini sağlıyor.
  • define(‘EMPTY_TRASH_DAYS’, 7); bu kodu wp-config.php dosyanıza eklerseniz 7 gün aralıkla çöpleri otomatik silecektir.
  •  define(‘WP_POST_REVISIONS’, FALSE); konuların geçmiş halleri bazen işe yarayabiliyor ama kapatmak isterseniz az da olsa admin panelinizi hızlandıracaktır.
  • define( ‘DISALLOW_FILE_EDIT’, true ); bu kodu wp-config.php dosyanıza eklerseniz admin paneli üzerinden tema ve eklenti düzenleme özellerini kapatır. Güvenlik için öneririm. Admin paneliniz hacklense bile hacklink yemeniz zorlaşır.
  • Gzip sıkıştırmasını aktifleştirdikten sonra https://checkgzipcompression.com/ sitesinden kontrol etmeyi unutmayın.
  • Wordpress temalarını biraz inceleyen varsa her şeyin otomatik olması için site başlığının bile php ile çekildiğini görebilir. Eğer sorgu sayınız fazlaysa bu sorguları azaltmanız faydalı olacaktır. Cache eklentileri ilk girişten sonra direk önbellek gösterdiği için bunu yapmasanız da olur . Bu biraz abartı olabilir size kalmış.
  •  P3 (Plugin Performance Profiler) ile eklentilerin sitenizi ne kadar yorduğunu görebilirsin. Jetpack’ten uzak durmanızı öneririm . Son kullandığımda admin panelini fazla yavaşlatıyordu şuanki durumunu bilmiyorum.
  • Kullandığınız temalarda kullanmadığınız özelllikler varsa bunları kod olarak da kaldırın. Yani slider kullanmıyorsanız index.php dosyanızda slider aktif mi değil mi diye kod olmasına gerek yok . Yedek almayı unutmayın tabiki.
  • gtmetrix’de serve scaled images hatasını alıyorsanız bunun nedeni resimlerinizin tema sisteminizde belirtilen boyutlardan farklı olmasıdır. Bunu çözmek için Regenerate Thumnails eklentisini önerebiilirim. Temanıza uygun resimlerinizi yeniden boyutlandırıyor.
  •  FTP’den girip baktığınızda wp-contents klasörünüzde 1 resimden onlarca adet olduğunu görebilirsiniz. Kullanılmayan resimleri bulmak ve toplu silmek için ise Image Cleanup eklentisini öneririm. Yedek almayı unutmayın.
  •  Resim konusunda bir toplama karar verirsek. İlk önce Regenerate Thumnails ile resimleri temamıza göre boyutlandıralım. Daha sonra Image Cleanup ile gereksizleri silelim. Son olarak ise herhangi bir eklenti ve ya site ile resimleri optimize edelim. Bu şekilde temanıza tamamen uygun , gerekli ve optimize resimler olacak. Bunu 3-4 farklı sitede denedim sorunla karşılaşmadım. 5000 resmi bu işlem ile 100 resme düşürdüğüm çok oldu .
  • Optimizasyon için temanızda yaptığınız değişiklikler, temaya güncelleme geldiği zaman gidebilir aklınızda bulunsun. Optimizasyon öncesi ve sonrasında yedek almayı unutmayın.
Cem Karakurt: