{"id":257,"date":"2025-12-14T22:18:29","date_gmt":"2025-12-14T22:18:29","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/cms-performans-ve-hiz-ayarlari-wordpress-joomla-drupal\/"},"modified":"2026-09-15T13:25:15","modified_gmt":"2026-09-15T13:25:15","slug":"cms-performans-ve-hiz-ayarlari-wordpress-joomla-drupal","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/cms-performans-ve-hiz-ayarlari-wordpress-joomla-drupal\/","title":{"rendered":"CMS Performans ve H\u0131z Ayarlar\u0131: WordPress, Joomla, Drupal"},"content":{"rendered":"<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\"><strong>\u0130\u00e7indekiler<\/strong><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#cms-tabanli-sitelerde-hiz-neden-bu-kadar-kritik\">CMS tabanl\u0131 sitelerde h\u0131z neden bu kadar kritik?<\/a><\/li>\n<li><a href=\"#altyapi-secimi-vps-bulut-ve-dedicated-arasinda-denge\">Altyap\u0131 se\u00e7imi: VPS, bulut ve dedicated aras\u0131nda denge<\/a><\/li>\n<li><a href=\"#web-sunucusu-ve-php-katmaninda-kritik-ayarlar\">Web sunucusu ve PHP katman\u0131nda kritik ayarlar<\/a><\/li>\n<li><a href=\"#veritabani-katmanini-ayarlamak\">Veritaban\u0131 katman\u0131n\u0131 ayarlamak<\/a><\/li>\n<li><a href=\"#wordpress-hizlandirma-icin-sunucu-odakli-pratikler\">WordPress h\u0131zland\u0131rma i\u00e7in sunucu odakl\u0131 pratikler<\/a><\/li>\n<li><a href=\"#joomla-sunucu-ayarlari-ile-kararli-hiz\">Joomla sunucu ayarlar\u0131 ile kararl\u0131 h\u0131z<\/a><\/li>\n<li><a href=\"#drupal-optimize-ipuclari\">Drupal optimize ipu\u00e7lar\u0131<\/a><\/li>\n<li><a href=\"#izleme-log-analizi-ve-surekli-iyilestirme-icin-yol-haritasi\">\u0130zleme, log analizi ve s\u00fcrekli iyile\u015ftirme i\u00e7in yol haritas\u0131<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"cms-tabanli-sitelerde-hiz-neden-bu-kadar-kritik\">CMS tabanl\u0131 sitelerde h\u0131z neden bu kadar kritik?<\/h2>\n<p>\u0130ster WordPress, ister Joomla, ister Drupal kullan\u0131yor olun; \u00f6l\u00e7ek b\u00fcy\u00fcd\u00fck\u00e7e sorun genelde temadan \u00f6nce altyap\u0131da patlar. <strong>CMS performans\u0131<\/strong> problemleri \u00e7o\u011fu zaman yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f PHP, veritaban\u0131 veya cache katman\u0131ndan kaynaklan\u0131r. Tema de\u011fi\u015ftirmek ya da eklenti silmek bazen i\u015fe yarar; sunucu taraf\u0131 zay\u0131fsa tek ba\u015f\u0131na yeterli olmaz.<\/p>\n<p>Canl\u0131 sistem y\u00f6neten herkes bilir: Trafik bir anda ikiye katland\u0131\u011f\u0131nda ilk darbe CPU, disk I\/O ve veritaban\u0131na gelir. \u00d6zellikle payla\u015f\u0131ml\u0131 hosting ortam\u0131nda saniyeler i\u00e7inde 504 hatalar\u0131, timeout sorunlar\u0131 ve admin paneline bile girememe gibi s\u0131k\u0131nt\u0131lar ortaya \u00e7\u0131kabilir. Bu y\u00fczden CMS&#8217;inizi ta\u015f\u0131yaca\u011f\u0131n\u0131z VPS, bulut veya dedicated sunucuyu i\u015f y\u00fck\u00fcn\u00fcze g\u00f6re se\u00e7mek ve g\u00fcncel, \u00f6l\u00e7\u00fclebilir varsay\u0131lanlarla kurmak gerekir.<\/p>\n<p>Buradaki odak, tek tek CMS ayarlar\u0131ndan \u00e7ok altyap\u0131n\u0131n \u00fc\u00e7 katman\u0131nda: web sunucusu ve PHP, veritaban\u0131 ve cache. <strong>WordPress h\u0131zland\u0131rma<\/strong>, <strong>Joomla sunucu ayarlar\u0131<\/strong> veya <strong>Drupal optimize<\/strong> \u00e7al\u0131\u015fmalar\u0131 yaparken temel prensip ayn\u0131 kal\u0131yor: statik i\u00e7eri\u011fi m\u00fcmk\u00fcn oldu\u011funca \u00f6nbellekten servis etmek, dinamik sorgu say\u0131s\u0131n\u0131 azaltmak ve a\u011f\u0131r i\u015flemleri arka plana ta\u015f\u0131mak.<\/p>\n<h2 id=\"altyapi-secimi-vps-bulut-ve-dedicated-arasinda-denge\">Altyap\u0131 se\u00e7imi: VPS, bulut ve dedicated aras\u0131nda denge<\/h2>\n<p>\u0130yi ayarlanmam\u0131\u015f g\u00fc\u00e7l\u00fc bir dedicated sunucu, d\u00fczg\u00fcn yap\u0131land\u0131r\u0131lm\u0131\u015f orta seviye bir VPS&#8217;ten daha yava\u015f \u00e7al\u0131\u015fabilir. \u00d6nce i\u015f y\u00fck\u00fcn\u00fc ve b\u00fcy\u00fcme h\u0131z\u0131n\u0131z\u0131 do\u011fru okumak gerekiyor.<\/p>\n<ul>\n<li>Az trafikli kurumsal site veya blog i\u00e7in genellikle 2 vCPU, 4 GB RAM ve h\u0131zl\u0131 SSD depolama i\u015f g\u00f6r\u00fcr.<\/li>\n<li>Yo\u011fun eklentili WordPress, \u00e7ok dilli Joomla veya a\u011f\u0131r mod\u00fcll\u00fc Drupal sitelerinde 4 vCPU, 8 GB RAM ve m\u00fcmk\u00fcnse NVMe diskle ba\u015flamak daha g\u00fcvenlidir.<\/li>\n<li>E-ticaret, \u00fcyelik tabanl\u0131 sistemler veya yo\u011fun API \u00e7a\u011fr\u0131s\u0131 alan projelerde <a href=\"https:\/\/www.vps.tc\/tr\/sanal-veri-merkezi\">sanal veri merkezi<\/a> ya da <a href=\"https:\/\/www.vps.tc\/tr\/turkiye-fiziksel-sunucu\">dedicated sunucu<\/a> tercih edip kaynaklar\u0131 yatayda \u00f6l\u00e7eklemek daha sa\u011fl\u0131kl\u0131d\u0131r.<\/li>\n<\/ul>\n<p>T\u00fcrkiye lokasyonlu, d\u00fc\u015f\u00fck gecikmeli bir altyap\u0131 ar\u0131yorsan\u0131z, CMS&#8217;inizi do\u011frudan payla\u015f\u0131ml\u0131 hosting yerine \u00f6rne\u011fin <a href=\"https:\/\/www.vps.tc\/tr\/vps\">VPS.TC VPS<\/a> ya da <a href=\"https:\/\/www.vps.tc\/tr\/bulut-sunucu\">bulut sunucu<\/a> \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak size daha tutarl\u0131 performans ve yap\u0131land\u0131rma \u00f6zg\u00fcrl\u00fc\u011f\u00fc sa\u011flar. Kendi Nginx, PHP-FPM ve veritaban\u0131 s\u00fcr\u00fcmlerinizi se\u00e7ebilirsiniz.<\/p>\n<p>Buradaki kritik nokta \u015fu: Donan\u0131m\u0131 rastgele b\u00fcy\u00fctmek yerine darbo\u011faz\u0131 \u00f6nce tespit edin. CPU mu doluyor, RAM mi \u015fi\u015fiyor, disk I\/O mu t\u0131kan\u0131yor, yoksa veritaban\u0131 sorgular\u0131 m\u0131 yava\u015f? \u00d6l\u00e7meden yap\u0131lan her optimizasyon \u00fcretim ortam\u0131nda risk demek.<\/p>\n<h2 id=\"web-sunucusu-ve-php-katmaninda-kritik-ayarlar\">Web sunucusu ve PHP katman\u0131nda kritik ayarlar<\/h2>\n<h3>PHP s\u00fcr\u00fcm\u00fc, OPcache ve FPM havuz ayarlar\u0131<\/h3>\n<p>WordPress, Joomla ve Drupal&#8217;\u0131n g\u00fcncel desteklenen s\u00fcr\u00fcmleri PHP 8.3, 8.4 ve projenin uyumluluk durumuna g\u00f6re PHP 8.5 ile \u00e7al\u0131\u015fabiliyor. Eyl\u00fcl 2026&#8217;da yeni kurulumlarda destek s\u00fcresi bitmi\u015f PHP 7.x veya erken PHP 8.x s\u00fcr\u00fcmlerini kullanmak i\u00e7in teknik bir gerek\u00e7e olmad\u0131k\u00e7a \u0131srar etmeyin. CMS, eklenti ve tema uyumlulu\u011funu staging ortam\u0131nda do\u011frulay\u0131p desteklenen en yeni kararl\u0131 s\u00fcr\u00fcme ge\u00e7in.<\/p>\n<p>PHP-FPM ile OPcache&#8217;i birlikte ele almak gerekir. OPcache, PHP dosyalar\u0131n\u0131n derlenmi\u015f halini bellekte tuttu\u011fu i\u00e7in her istekte dosya okuma ve derleme maliyetini azalt\u0131r. \u00dcretim ortam\u0131nda ba\u015flang\u0131\u00e7 i\u00e7in \u015fu de\u011ferler makul olabilir:<\/p>\n<ul>\n<li><code>opcache.enable=1<\/code><\/li>\n<li><code>opcache.memory_consumption=256<\/code> (\u00e7ok say\u0131da eklenti veya uygulama dosyas\u0131 varsa 512 MB \u00f6l\u00e7\u00fclerek de\u011ferlendirilebilir)<\/li>\n<li><code>opcache.max_accelerated_files=30000<\/code><\/li>\n<li><code>opcache.validate_timestamps=0<\/code> (yaln\u0131zca kontroll\u00fc bir deploy s\u00fcreciniz varsa)<\/li>\n<\/ul>\n<p>PHP 8.5 gibi yeni bir s\u00fcr\u00fcme ge\u00e7erken yaln\u0131zca PHP-FPM servisini de\u011fil, ilgili <code>php-fpm<\/code>, Redis\/APCu uzant\u0131lar\u0131n\u0131 ve CMS eklentilerini de test edin. <code>validate_timestamps=0<\/code> kullan\u0131p dosya de\u011fi\u015fikli\u011finden sonra FPM&#8217;i yeniden ba\u015flatmay\u0131 unutursan\u0131z, eski kodun \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 sanabilirsiniz.<\/p>\n<p>PHP-FPM havuz ayarlar\u0131, \u00f6zellikle y\u00fcksek trafikli WordPress h\u0131zland\u0131rma senaryolar\u0131nda b\u00fcy\u00fck fark yarat\u0131r. Basit bir \u00f6rnek \u015f\u00f6yle olabilir:<\/p>\n<pre><code>[www]\npm = dynamic\npm.max_children = 20\npm.start_servers = 4\npm.min_spare_servers = 4\npm.max_spare_servers = 8\npm.max_requests = 500<\/code><\/pre>\n<p>Bu de\u011ferler her sistem i\u00e7in ge\u00e7erli de\u011fildir. <code>pm.max_children<\/code> de\u011ferini RAM kapasitesine, PHP s\u00fcre\u00e7lerinin ger\u00e7ek bellek t\u00fcketimine ve e\u015fzamanl\u0131 istek say\u0131s\u0131na g\u00f6re belirleyin. Ben bir m\u00fc\u015fterinin yo\u011fun saatlerde swap&#8217;e d\u00fc\u015ft\u00fc\u011f\u00fcn\u00fc incelerken sorunun CPU olmad\u0131\u011f\u0131n\u0131, FPM s\u00fcre\u00e7lerinin RAM&#8217;i t\u00fcketti\u011fini <code>ps<\/code> ve <code>free -h<\/code> \u00e7\u0131kt\u0131lar\u0131yla g\u00f6rm\u00fc\u015ft\u00fcm. Daha y\u00fcksek bir say\u0131 yazmak \u00e7\u00f6z\u00fcm de\u011fil; bazen tam tersidir.<\/p>\n<h3>Nginx veya Apache i\u00e7in ba\u011flant\u0131 ve s\u0131k\u0131\u015ft\u0131rma ayarlar\u0131<\/h3>\n<p>Web sunucusu taraf\u0131nda hedef, ba\u011flant\u0131lar\u0131 verimli y\u00f6netmek ve metin tabanl\u0131 yan\u0131tlar\u0131 gereksiz CPU harcamadan k\u00fc\u00e7\u00fcltmektir.<\/p>\n<p>Nginx kullan\u0131yorsan\u0131z, keepalive ve gzip ayarlar\u0131 i\u00e7in ba\u015flang\u0131\u00e7 noktas\u0131 \u015f\u00f6yle olabilir:<\/p>\n<pre><code>http {\n    keepalive_timeout 15;\n    sendfile on;\n    tcp_nopush on;\n\n    gzip on;\n    gzip_comp_level 5;\n    gzip_min_length 1024;\n    gzip_types text\/css application\/javascript application\/json image\/svg+xml;\n}<\/code><\/pre>\n<p>Modern istemcilerde Brotli de de\u011ferlendirilebilir. Nginx kurulumunuzdaki Brotli mod\u00fcl\u00fcn\u00fc ve da\u011f\u0131t\u0131m paketlerini kontrol etmeden rastgele bir direktif eklemeyin; <code>nginx -t<\/code> \u00e7al\u0131\u015ft\u0131rmadan reload etmek, ge\u00e7mi\u015fte benim de yapt\u0131\u011f\u0131m gereksiz bir kumard\u0131.<\/p>\n<p>Apache kullan\u0131yorsan\u0131z event MPM ve <code>mod_http2<\/code> ile PHP-FPM entegrasyonunu, yani <code>mod_proxy_fcgi<\/code> yakla\u015f\u0131m\u0131n\u0131 tercih edin. <code>mod_php<\/code> her kurulumda yanl\u0131\u015f de\u011fildir; fakat ayr\u0131 PHP-FPM havuzlar\u0131 ve daha kontroll\u00fc kaynak y\u00f6netimi gereken sunucularda daha s\u0131n\u0131rl\u0131 kalabilir. <code>mod_deflate<\/code> veya Brotli ile HTML, CSS ve JavaScript yan\u0131tlar\u0131n\u0131 s\u0131k\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p>Her \u015feyi maksimuma a\u00e7mak do\u011fru de\u011fil. <code>gzip_comp_level 9<\/code> CPU&#8217;yu gereksiz yorabilir; kazan\u0131lan bant geni\u015fli\u011fi \u00e7o\u011fu senaryoda bu bedeli kar\u015f\u0131lamaz. \u00dcretimde de\u011fi\u015fiklikleri \u00f6nce test edip canl\u0131ya al\u0131rken hata oran\u0131, yan\u0131t s\u00fcresi ve CPU kullan\u0131m\u0131n\u0131 birlikte izleyin.<\/p>\n<h2 id=\"veritabani-katmanini-ayarlamak\">Veritaban\u0131 katman\u0131n\u0131 ayarlamak<\/h2>\n<h3>MySQL\/MariaDB i\u00e7in temel tampon ve ba\u011flant\u0131 ayarlar\u0131<\/h3>\n<p>WordPress, Joomla ve Drupal&#8217;\u0131n b\u00fcy\u00fck \u00e7o\u011funlu\u011fu MySQL veya MariaDB \u00fczerinde \u00e7al\u0131\u015f\u0131yor. Veritaban\u0131 yava\u015fsa, PHP ve sayfa cache&#8217;i baz\u0131 istekleri kurtar\u0131r; fakat dinamik sayfalar\u0131n toplam s\u00fcresini tamamen saklayamaz.<\/p>\n<p>\u0130lk bak\u0131lacak yer InnoDB yap\u0131land\u0131rmas\u0131d\u0131r. <code>innodb_buffer_pool_size<\/code> \u00e7ok k\u00fc\u00e7\u00fckse s\u0131k kullan\u0131lan veri ve indeksler RAM&#8217;e s\u0131\u011fmaz, disk eri\u015fimi artar. Ayr\u0131 bir veritaban\u0131 sunucusunda ba\u015flang\u0131\u00e7 i\u00e7in RAM&#8217;in yakla\u015f\u0131k y\u00fczde 50-70&#8217;i de\u011ferlendirilebilir; ayn\u0131 makinede PHP, web sunucusu ve Redis de \u00e7al\u0131\u015f\u0131yorsa bu oran\u0131 k\u00f6r\u00fc k\u00f6r\u00fcne uygulamay\u0131n.<\/p>\n<pre><code>[mysqld]\ninnodb_buffer_pool_size = 4G\nmax_connections = 100\nskip_name_resolve = ON\nquery_cache_type = 0\nquery_cache_size = 0<\/code><\/pre>\n<p><code>innodb_log_file_size<\/code> sat\u0131r\u0131n\u0131 eski rehberlerden kopyalay\u0131p do\u011frudan kullanmay\u0131n. MySQL 8.0.30 ve sonraki s\u00fcr\u00fcmlerde redo log y\u00f6netimi de\u011fi\u015fti; MariaDB ve MySQL s\u00fcr\u00fcm\u00fcne g\u00f6re ilgili g\u00fcncel de\u011fi\u015fkenler farkl\u0131 olabilir. \u00d6nce <code>SELECT VERSION();<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131n, ard\u0131ndan kulland\u0131\u011f\u0131n\u0131z s\u00fcr\u00fcm\u00fcn resmi dok\u00fcmantasyonuna g\u00f6re redo log kapasitesini ayarlay\u0131n.<\/p>\n<p>MySQL 8.0&#8217;da query cache zaten kald\u0131r\u0131lm\u0131\u015ft\u0131r. MariaDB&#8217;de bulunabilse de yo\u011fun yazma trafi\u011finde \u00e7o\u011fu uygulama i\u00e7in kapal\u0131 b\u0131rakmak daha g\u00fcvenlidir. <code>max_connections<\/code> de\u011ferini de al\u0131\u015fkanl\u0131kla 1000 yapmay\u0131n. Her ba\u011flant\u0131n\u0131n bellek maliyeti vard\u0131r; ba\u011flant\u0131 havuzu veya uygulama taraf\u0131ndaki limitler \u00e7o\u011fu zaman daha temiz bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h3>CMS seviyesinde temizlik ve indeks kullan\u0131m\u0131<\/h3>\n<p>WordPress h\u0131zland\u0131rma \u00e7al\u0131\u015fmalar\u0131nda gereksiz revizyon kay\u0131tlar\u0131, otomatik taslaklar ve \u015fi\u015fmi\u015f <code>wp_options<\/code> tablosu klasik sorunlard\u0131r. D\u00fczg\u00fcn bir bak\u0131m takvimi ile:<\/p>\n<ul>\n<li>Eski revizyonlar\u0131 ve otomatik taslaklar\u0131 temizleyebilir,<\/li>\n<li>autoload edilen ama art\u0131k kullan\u0131lmayan se\u00e7enekleri tespit edip kald\u0131rabilir,<\/li>\n<li>Yava\u015f sorgu kay\u0131tlar\u0131na bakarak ger\u00e7ekten ihtiya\u00e7 duyulan indeksleri ekleyebilirsiniz.<\/li>\n<\/ul>\n<p>Joomla ve Drupal taraf\u0131nda da log ve oturum tablolar\u0131 zamanla \u015fi\u015fer. Drupal&#8217;\u0131n g\u00fcncel s\u00fcr\u00fcmlerinde log kay\u0131tlar\u0131 veritaban\u0131 yerine syslog gibi kanallara y\u00f6nlendirilebilir; bu se\u00e7ene\u011fi uygulaman\u0131z\u0131n hata ay\u0131klama ihtiyac\u0131yla birlikte de\u011ferlendirin. Sadece tabloyu silmek yerine kay\u0131t saklama s\u00fcresini ve cron temizli\u011fini belirleyin.<\/p>\n<p>Bu i\u015flemleri do\u011frudan \u00fcretim veritaban\u0131nda denemeyin. \u00d6nce geri d\u00f6n\u00fc\u015f\u00fc do\u011frulanm\u0131\u015f bir yedek al\u0131n, tercihen staging ortam\u0131nda test edin, ard\u0131ndan bak\u0131m penceresi a\u00e7\u0131n. WHERE&#8217;siz bir <code>DELETE<\/code> komutunun ne kadar h\u0131zl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmek istemezsiniz.<\/p>\n<h2 id=\"wordpress-hizlandirma-icin-sunucu-odakli-pratikler\">WordPress h\u0131zland\u0131rma i\u00e7in sunucu odakl\u0131 pratikler<\/h2>\n<p>WordPress ekosisteminde \u00e7ok say\u0131da cache eklentisi var; as\u0131l kazan\u0131m, eklentiyi do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir sunucu ortam\u0131yla birle\u015ftirdi\u011finizde ortaya \u00e7\u0131kar.<\/p>\n<p>\u00d6nce PHP taraf\u0131nda OPcache&#8217;in stabil \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. Ard\u0131ndan object cache i\u00e7in Redis veya Memcached tercih etmek, \u00f6zellikle \u00e7ok sorgu yapan eklentilerde rahatlama sa\u011flayabilir. Redis&#8217;i internete a\u00e7\u0131k b\u0131rakmay\u0131n; Unix socket veya yaln\u0131zca yerel a\u011f \u00fczerinden eri\u015fim ve kimlik do\u011frulama kullan\u0131n.<\/p>\n<p>Yo\u011fun trafik alan sitelerde WordPress cron sistemini ger\u00e7ek cron&#8217;a ta\u015f\u0131mak da gereksiz istek y\u00fck\u00fcn\u00fc azalt\u0131r:<\/p>\n<pre><code>define('DISABLE_WP_CRON', true);<\/code><\/pre>\n<p>Bu sat\u0131rdan sonra sistem cron&#8217;unda dakikada bir \u00e7al\u0131\u015fan bir g\u00f6rev ekleyebilirsiniz:<\/p>\n<pre><code># WordPress cron'u ger\u00e7ek cron \u00fczerinden \u00e7al\u0131\u015ft\u0131rmak i\u00e7in\n* * * * * www-data php \/var\/www\/site\/public\/wp-cron.php &gt;\/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>Buradaki yolu ve kullan\u0131c\u0131y\u0131 kendi kurulumunuza g\u00f6re de\u011fi\u015ftirin. Cron&#8217;u yanl\u0131\u015f kullan\u0131c\u0131yla \u00e7al\u0131\u015ft\u0131rmak dosya sahipli\u011fini bozabilir. Bir keresinde yedek script&#8217;ine fazladan bir y\u0131ld\u0131z eklenip g\u00f6revin her dakika \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, posta kuyru\u011fu b\u00fcy\u00fcy\u00fcnce fark etmi\u015ftim. Cron sat\u0131r\u0131n\u0131 kaydettikten sonra <code>journalctl<\/code> veya ilgili mail logunu kontrol etmek k\u00fc\u00e7\u00fck bir sigorta.<\/p>\n<p>Nginx kullan\u0131yorsan\u0131z WordPress i\u00e7in FastCGI cache, anonim kullan\u0131c\u0131 trafi\u011finde yan\u0131t s\u00fcresini ciddi bi\u00e7imde azaltabilir. Giri\u015f yapm\u0131\u015f kullan\u0131c\u0131lar\u0131, sepeti olan ziyaret\u00e7ileri ve \u00f6zel cookie ta\u015f\u0131yan istekleri cache d\u0131\u015f\u0131nda b\u0131rak\u0131n. Cache anahtar\u0131n\u0131 ve temizleme mekanizmas\u0131n\u0131 test etmeden canl\u0131ya almay\u0131n.<\/p>\n<p>Resimleri otomatik s\u0131k\u0131\u015ft\u0131ran ve WebP ya da AVIF \u00fcreten \u00e7\u00f6z\u00fcmler, CDN ve HTTP\/2 deste\u011fi de \u00f6nemlidir. HTTP\/3 kullan\u0131lacaksa istemci, CDN veya ters proxy deste\u011fini ayr\u0131ca do\u011frulay\u0131n; yaln\u0131zca sunucuda UDP 443 a\u00e7mak HTTP\/3 kurulumu say\u0131lmaz.<\/p>\n<h2 id=\"joomla-sunucu-ayarlari-ile-kararli-hiz\">Joomla sunucu ayarlar\u0131 ile kararl\u0131 h\u0131z<\/h2>\n<p>Joomla, mod\u00fcl ve eklentiler \u00fczerinden geni\u015fletildi\u011fi i\u00e7in k\u00f6t\u00fc yaz\u0131lm\u0131\u015f birka\u00e7 bile\u015fen t\u00fcm siteyi yava\u015flatabilir. Sunucu taraf\u0131nda alaca\u011f\u0131n\u0131z \u00f6nlemler bu etkiyi s\u0131n\u0131rlayabilir; kusurlu bir sorguyu cache ile sonsuza kadar gizleyemezsiniz.<\/p>\n<p>\u00d6ncelikle Joomla s\u00fcr\u00fcm\u00fcn\u00fcz\u00fcn destekledi\u011fi PHP 8.x dal\u0131n\u0131 se\u00e7ip OPcache&#8217;i etkinle\u015ftirin. Joomla&#8217;n\u0131n dahili cache mekanizmas\u0131n\u0131 etkinle\u015ftirirken, oturum ve cache verisinin birden fazla web sunucusunda payla\u015f\u0131lmas\u0131 gerekiyorsa Redis gibi bir store kullan\u0131n. Tek sunuculu k\u00fc\u00e7\u00fck kurulumlarda dosya cache&#8217;i, y\u00f6netimi daha basit oldu\u011fu i\u00e7in yeterli olabilir.<\/p>\n<p>Joomla sunucu ayarlar\u0131 taraf\u0131nda dikkat edilmesi gereken ba\u015fl\u0131klar:<\/p>\n<ul>\n<li>Gzip veya Brotli s\u0131k\u0131\u015ft\u0131rmas\u0131n\u0131 web sunucusu seviyesinde etkinle\u015ftirmek,<\/li>\n<li>Birden fazla uygulama d\u00fc\u011f\u00fcm\u00fc varsa session verisini Redis gibi merkezi bir store&#8217;da tutmak,<\/li>\n<li>PHP-FPM havuzunu admin trafi\u011fini ve arka plan g\u00f6revlerini hesaba katarak boyutland\u0131rmak,<\/li>\n<li>Gereksiz Apache mod\u00fcllerini kapatmak veya Nginx taraf\u0131nda fazla kural y\u00fck\u00fcn\u00fc azaltmak.<\/li>\n<\/ul>\n<p>Admin panelinde yap\u0131lan yap\u0131land\u0131rma de\u011fi\u015fikliklerini staging Joomla kopyas\u0131nda test edin. \u00d6zellikle cache ve s\u0131k\u0131\u015ft\u0131rma ayarlar\u0131nda bozulmay\u0131 bu \u015fekilde daha erken g\u00f6r\u00fcrs\u00fcn\u00fcz. Yanl\u0131\u015f bir <code>.htaccess<\/code> kural\u0131, t\u00fcm siteyi 500 hata ekran\u0131na \u00e7evirebilir.<\/p>\n<h2 id=\"drupal-optimize-ipuclari\">Drupal optimize ipu\u00e7lar\u0131<\/h2>\n<p>Drupal, esnekli\u011fi ve mod\u00fcler yap\u0131s\u0131 sayesinde b\u00fcy\u00fck projelerde s\u0131k tercih ediliyor; yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda a\u011f\u0131r \u00e7al\u0131\u015fabiliyor. Burada da sunucu taraf\u0131 ayarlar\u0131 \u00f6nemli bir kald\u0131ra\u00e7.<\/p>\n<p>Drupal&#8217;\u0131n cache sistemini kullanabilmek i\u00e7in PHP OPcache&#8217;i etkinle\u015ftirin. APCu, tek sunuculu kurulumlarda yerel cache i\u00e7in; Redis ise payla\u015f\u0131lan cache ve session ihtiyac\u0131 olan \u00e7oklu sunucu senaryolar\u0131nda de\u011ferlendirilebilir. Redis&#8217;i her durumda zorunlu bir bile\u015fen gibi kurmak yerine trafik ve mimariye g\u00f6re karar verin.<\/p>\n<p>Asset CSS ve JavaScript birle\u015ftirme ile k\u00fc\u00e7\u00fcltme ayarlar\u0131n\u0131 kontroll\u00fc bi\u00e7imde etkinle\u015ftirin. HTTP\/2 ve uygun altyap\u0131da HTTP\/3 deste\u011fi olan bir ters proxy arkas\u0131nda Drupal \u00e7al\u0131\u015ft\u0131rmak ba\u011flant\u0131 y\u00f6netimini iyile\u015ftirebilir; fakat uygulama i\u00e7indeki yava\u015f sorguyu ortadan kald\u0131rmaz.<\/p>\n<p>Drupal optimize \u00e7al\u0131\u015fmalar\u0131nda log ve cron yap\u0131land\u0131rmas\u0131n\u0131 atlamay\u0131n. Yo\u011fun log tutan mod\u00fcller diski doldurabilir, d\u00fczenli \u00e7al\u0131\u015fmayan cron g\u00f6revleri ise cache temizli\u011fi ve kuyruk i\u015flemlerini aksatabilir. Cron s\u0131kl\u0131\u011f\u0131n\u0131 trafik profiliniz ve arka plan i\u015flerinin s\u00fcresiyle uyumlu hale getirin.<\/p>\n<p>Veritaban\u0131 sorgular\u0131n\u0131 da izleyin. Yava\u015f sorgu loglar\u0131 ve uygulama seviyesindeki profil ara\u00e7lar\u0131 hangi sorgunun bekledi\u011fini g\u00f6sterebilir. Bu sorgulara uygun indeks eklemek, kimi zaman donan\u0131m\u0131 iki kat\u0131na \u00e7\u0131karmaktan daha etkili olur; indeksi eklemeden \u00f6nce yazma maliyetini ve sorgu plan\u0131n\u0131 kontrol edin.<\/p>\n<h2 id=\"izleme-log-analizi-ve-surekli-iyilestirme-icin-yol-haritasi\">\u0130zleme, log analizi ve s\u00fcrekli iyile\u015ftirme i\u00e7in yol haritas\u0131<\/h2>\n<p>Sunucunuza SSH ile ba\u011fland\u0131\u011f\u0131n\u0131zda ilk i\u015f anl\u0131k durumu g\u00f6rmek olmal\u0131. Ben ba\u015flang\u0131\u00e7ta <code>htop<\/code> a\u00e7ar\u0131m; ard\u0131ndan disk ve a\u011f taraf\u0131n\u0131 ayr\u0131 ayr\u0131 incelerim.<\/p>\n<pre><code># Temel canl\u0131 izleme komutlar\u0131\nhtop\niostat -xz 1\nvmstat 1\nss -tnp | head<\/code><\/pre>\n<p><code>iostat<\/code> komutu yoksa Debian ve Ubuntu&#8217;da genellikle <code>sysstat<\/code> paketini kurman\u0131z gerekir. Bu komutlar CPU mu dolu, disk mi bekliyor, yoksa TCP ba\u011flant\u0131lar\u0131 m\u0131 birikiyor sorular\u0131na ba\u015flang\u0131\u00e7 cevab\u0131 verir. Ard\u0131ndan web sunucusu access ve error loglar\u0131, PHP-FPM loglar\u0131 ve veritaban\u0131 slow query log&#8217;u ile tabloyu netle\u015ftirin.<\/p>\n<p>Her b\u00fcy\u00fck de\u011fi\u015fiklikten \u00f6nce dosya sistemi, veritaban\u0131 ve m\u00fcmk\u00fcnse snapshot bazl\u0131 tam yedek al\u0131n. Yedek dosyas\u0131n\u0131n var olmas\u0131 yeterli de\u011fil; geri d\u00f6n\u00fc\u015f\u00fc d\u00fczenli olarak deneyin. \u00d6zellikle <a href=\"https:\/\/www.vps.tc\/tr\/vds-sanal-sunucu\">VDS<\/a> veya <a href=\"https:\/\/www.vps.tc\/tr\/bulut-sunucu\">bulut sunucu<\/a> kullan\u0131yorsan\u0131z snapshot h\u0131zl\u0131 geri d\u00f6n\u00fc\u015f i\u00e7in yararl\u0131d\u0131r, fakat tek ba\u015f\u0131na yedek stratejisi de\u011fildir.<\/p>\n<p>\u0130lerlerken \u015fu d\u00f6ng\u00fc i\u015fimi kolayla\u015ft\u0131r\u0131yor:<\/p>\n<ul>\n<li>\u00d6l\u00e7: CPU, RAM, disk I\/O, sorgu s\u00fcreleri ve yan\u0131t s\u00fcrelerini izle.<\/li>\n<li>Darbo\u011faz\u0131 bul: En \u00e7ok kaynak t\u00fcketen bile\u015feni tespit et.<\/li>\n<li>Hedefli de\u011fi\u015fiklik yap: Sadece ilgili katmanda ayar de\u011fi\u015ftir.<\/li>\n<li>Tekrar \u00f6l\u00e7: De\u011fi\u015fikli\u011fin etkisini rakamlarla g\u00f6r.<\/li>\n<\/ul>\n<p>\u0130lk ad\u0131m olarak mevcut sunucunuzda k\u00fc\u00e7\u00fck bir performans envanteri \u00e7\u0131kar\u0131n: Hangi PHP s\u00fcr\u00fcm\u00fc kullan\u0131l\u0131yor, OPcache aktif mi, veritaban\u0131 tamponlar\u0131 yeterli mi, cache mekanizmas\u0131 nas\u0131l \u00e7al\u0131\u015f\u0131yor? Ard\u0131ndan ayarlar\u0131 staging ortam\u0131nda deneyip canl\u0131ya kontroll\u00fc ge\u00e7in. Benim laboratuvar\u0131mda Proxmox \u00fczerindeki test makineleri bu y\u00fczden var; m\u00fc\u015fterinin sunucusu deneme tahtas\u0131 de\u011fil.<\/p>\n<p>WordPress sitenizin h\u0131z ayarlar\u0131n\u0131 yaparken SEO taraf\u0131n\u0131 da g\u00f6zden ge\u00e7irmek isterseniz, <a href=\"https:\/\/www.vps.tc\/blog\/tr\/wordpress-seo-eklentileri-en-iyi-secenekler\/\">WordPress SEO eklentileri<\/a> rehberime g\u00f6z atabilirsiniz. Hangi eklentinin hangi \u00f6zellikleri sundu\u011funu ve performans\u0131 nas\u0131l etkileyebilece\u011fini bu yaz\u0131da kar\u015f\u0131la\u015ft\u0131rd\u0131m.<\/p>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<h3>CMS performans\u0131n\u0131 art\u0131rmak i\u00e7in nereden ba\u015flamal\u0131y\u0131m?<\/h3>\n<p>\u00d6nce \u00f6l\u00e7\u00fcmle ba\u015flay\u0131n. CPU, RAM, disk I\/O, PHP-FPM s\u00fcre\u00e7leri, veritaban\u0131 sorgular\u0131 ve ger\u00e7ek yan\u0131t s\u00fcrelerini izleyin. Darbo\u011faz belli olduktan sonra PHP s\u00fcr\u00fcm\u00fcn\u00fc, OPcache&#8217;i, veritaban\u0131 tamponlar\u0131n\u0131 ve uygun cache katman\u0131n\u0131 s\u0131rayla de\u011ferlendirin.<\/p>\n<h3>WordPress h\u0131zland\u0131rma i\u00e7in PHP 8.5&#8217;e ge\u00e7mek zorunlu mu?<\/h3>\n<p>Zorunlu de\u011fil. Eyl\u00fcl 2026&#8217;da desteklenen en yeni kararl\u0131 PHP s\u00fcr\u00fcm\u00fc iyi bir adayd\u0131r; ancak tema, eklenti ve WordPress s\u00fcr\u00fcm\u00fcn\u00fczle uyumlulu\u011fu staging ortam\u0131nda test etmeden canl\u0131ya ge\u00e7meyin. Uyumluluk sorunu varsa desteklenen PHP 8.3 veya 8.4 dal\u0131 daha do\u011fru se\u00e7im olabilir.<\/p>\n<h3>Joomla sunucu ayarlar\u0131 i\u00e7in minimum donan\u0131m ne olmal\u0131?<\/h3>\n<p>K\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli sitelerde 2 vCPU, 4 GB RAM ve h\u0131zl\u0131 SSD makul bir ba\u015flang\u0131\u00e7t\u0131r. Yo\u011fun bile\u015fen, \u00e7ok dil veya y\u00fcksek trafik varsa 4 vCPU ve 8 GB RAM daha g\u00fcvenli olabilir. Kesin de\u011fer, \u00f6l\u00e7\u00fclen PHP s\u00fcre\u00e7 t\u00fcketimi ve veritaban\u0131 y\u00fck\u00fcne g\u00f6re belirlenmelidir.<\/p>\n<h3>Drupal optimize \u00e7al\u0131\u015fmalar\u0131nda Redis her zaman gerekli mi?<\/h3>\n<p>Hay\u0131r. Tek sunuculu k\u00fc\u00e7\u00fck bir Drupal kurulumunda OPcache ve APCu yeterli olabilir. Birden fazla uygulama d\u00fc\u011f\u00fcm\u00fcnde ortak cache veya session gerekiyorsa Redis anlaml\u0131 hale gelir. Kurmadan \u00f6nce cache ve session mimarisinin ger\u00e7ekten merkezi bir store gerektirip gerektirmedi\u011fini kontrol edin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress, Joomla ve Drupal sitelerinde ger\u00e7ek h\u0131z kazanmak istiyorsan\u0131z i\u015fe sunucudan ba\u015flamak zorundas\u0131n\u0131z. PHP, veritaban\u0131 ve cache ayarlar\u0131yla cms performans fark\u0131n\u0131 net g\u00f6r\u00fcrs\u00fcn\u00fcz.<\/p>\n","protected":false},"author":1,"featured_media":256,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[666],"tags":[],"class_list":["post-257","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cms"],"lang":"tr","translations":{"tr":257,"en":272},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=257"}],"version-history":[{"count":4,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/257\/revisions"}],"predecessor-version":[{"id":695,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/257\/revisions\/695"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/256"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}