{"id":4019,"date":"2026-01-02T19:32:49","date_gmt":"2026-01-02T16:32:49","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/cdn-ve-tarayici-onbelleginde-cache-busting-stratejileri\/"},"modified":"2026-01-02T19:32:49","modified_gmt":"2026-01-02T16:32:49","slug":"cdn-ve-tarayici-onbelleginde-cache-busting-stratejileri","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/cdn-ve-tarayici-onbelleginde-cache-busting-stratejileri\/","title":{"rendered":"CDN ve Taray\u0131c\u0131 \u00d6nbelle\u011finde Cache Busting Stratejileri"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#CDN_ve_Tarayici_Onbelleginde_Neyi_Cozdugumuzu_Netlestirelim\"><span class=\"toc_number toc_depth_1\">1<\/span> CDN ve Taray\u0131c\u0131 \u00d6nbelle\u011finde Neyi \u00c7\u00f6zd\u00fc\u011f\u00fcm\u00fcz\u00fc Netle\u015ftirelim<\/a><\/li><li><a href=\"#Temel_Mekanik_Tarayici_Onbellegi_CDN_ve_Origin_Arasindaki_Dans\"><span class=\"toc_number toc_depth_1\">2<\/span> Temel Mekanik: Taray\u0131c\u0131 \u00d6nbelle\u011fi, CDN ve Origin Aras\u0131ndaki Dans<\/a><\/li><li><a href=\"#Cache_Busting_Yaklasimlari_Secenekleri_Masaya_Yatiralim\"><span class=\"toc_number toc_depth_1\">3<\/span> Cache Busting Yakla\u015f\u0131mlar\u0131: Se\u00e7enekleri Masaya Yat\u0131ral\u0131m<\/a><ul><li><a href=\"#1_Version_Query_String_stylecssv123_Mantigi\"><span class=\"toc_number toc_depth_2\">3.1<\/span> 1) Version Query String: style.css?v=123 Mant\u0131\u011f\u0131<\/a><\/li><li><a href=\"#2_Dosya_Yeniden_Adlandirma_style123css_ve_Filename_Hashing\"><span class=\"toc_number toc_depth_2\">3.2<\/span> 2) Dosya Yeniden Adland\u0131rma: style.123.css ve Filename Hashing<\/a><\/li><li><a href=\"#3_Asset_Manifest_ve_HTML_Entegrasyonu\"><span class=\"toc_number toc_depth_2\">3.3<\/span> 3) Asset Manifest ve HTML Entegrasyonu<\/a><\/li><\/ul><\/li><li><a href=\"#CDN_Acisindan_Cache_Busting_Cache-Key_Query_String_ve_Purge\"><span class=\"toc_number toc_depth_1\">4<\/span> CDN A\u00e7\u0131s\u0131ndan Cache Busting: Cache-Key, Query String ve Purge<\/a><ul><li><a href=\"#Cache-Key_ve_Query_String_Politikalari\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Cache-Key ve Query String Politikalar\u0131<\/a><\/li><li><a href=\"#Purge_Invalidate_ve_TTL_Iliskisi\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Purge, Invalidate ve TTL \u0130li\u015fkisi<\/a><\/li><\/ul><\/li><li><a href=\"#Tarayici_Onbellegi_Icin_En_Saglikli_Model_Uzun_TTL_Guvenilir_Cache_Busting\"><span class=\"toc_number toc_depth_1\">5<\/span> Taray\u0131c\u0131 \u00d6nbelle\u011fi \u0130\u00e7in En Sa\u011fl\u0131kl\u0131 Model: Uzun TTL + G\u00fcvenilir Cache Busting<\/a><\/li><li><a href=\"#Deploy_Surecine_Entegrasyon_Manuel_Isten_Otomatik_ve_Guvenilir_Surece\"><span class=\"toc_number toc_depth_1\">6<\/span> Deploy S\u00fcrecine Entegrasyon: Manuel \u0130\u015ften Otomatik ve G\u00fcvenilir S\u00fcrece<\/a><ul><li><a href=\"#WordPressPHP_Projelerinde_Basit_Version_Query_String_Entegrasyonu\"><span class=\"toc_number toc_depth_2\">6.1<\/span> WordPress\/PHP Projelerinde Basit Version Query String Entegrasyonu<\/a><\/li><li><a href=\"#Modern_Frontend_WebpackVite_ile_Filename_Hashing\"><span class=\"toc_number toc_depth_2\">6.2<\/span> Modern Frontend (Webpack\/Vite) ile Filename Hashing<\/a><\/li><li><a href=\"#CICD_Pipeline8217inda_Cache_Busting_Versiyonlamasi\"><span class=\"toc_number toc_depth_2\">6.3<\/span> CI\/CD Pipeline&#8217;\u0131nda Cache Busting Versiyonlamas\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Blue-Green_ve_Canary_Dagitimlarda_Cache_Busting_Stratejisi\"><span class=\"toc_number toc_depth_1\">7<\/span> Blue-Green ve Canary Da\u011f\u0131t\u0131mlarda Cache Busting Stratejisi<\/a><\/li><li><a href=\"#DCHost_Altyapisinda_Onerilen_Mimari_CDN_Uzun_TTL_Hash8217li_Asset8217ler\"><span class=\"toc_number toc_depth_1\">8<\/span> DCHost Altyap\u0131s\u0131nda \u00d6nerilen Mimari: CDN + Uzun TTL + Hash&#8217;li Asset&#8217;ler<\/a><\/li><li><a href=\"#Sik_Yapilan_Hatalar_ve_Mini_Kontrol_Listesi\"><span class=\"toc_number toc_depth_1\">9<\/span> S\u0131k Yap\u0131lan Hatalar ve Mini Kontrol Listesi<\/a><\/li><li><a href=\"#Sonuc_Cache_Busting8217i_Bir_Kez_Dogru_Kur_Yillarca_Rahat_Et\"><span class=\"toc_number toc_depth_1\">10<\/span> Sonu\u00e7: Cache Busting&#8217;i Bir Kez Do\u011fru Kur, Y\u0131llarca Rahat Et<\/a><\/li><\/ul><\/div>\n<h2><span id=\"CDN_ve_Tarayici_Onbelleginde_Neyi_Cozdugumuzu_Netlestirelim\">CDN ve Taray\u0131c\u0131 \u00d6nbelle\u011finde Neyi \u00c7\u00f6zd\u00fc\u011f\u00fcm\u00fcz\u00fc Netle\u015ftirelim<\/span><\/h2>\n<p>\u00d6nbellekleme ayarlar\u0131n\u0131 &#8220;bir kere d\u00fczg\u00fcn yapal\u0131m, sonra uzun s\u00fcre dokunmayal\u0131m&#8221; dedi\u011fimiz her projede, birka\u00e7 deploy sonra ayn\u0131 duvara \u00e7arp\u0131yoruz: Kullan\u0131c\u0131lar\u0131n taray\u0131c\u0131lar\u0131 eski CSS ve JavaScript dosyalar\u0131n\u0131 tutuyor, CDN edge d\u00fc\u011f\u00fcmleri g\u00fcncel dosyalar\u0131 g\u00f6rm\u00fcyor ve canl\u0131da tuhaf hatalar ortaya \u00e7\u0131k\u0131yor. Tam da burada <strong>cache busting<\/strong> stratejileri devreye giriyor.<\/p>\n<p>Cache busting, basit\u00e7e s\u00f6ylemek gerekirse, statik varl\u0131klar\u0131n\u0131z\u0131n (CSS, JS, g\u00f6rseller vb.) <strong>i\u00e7eri\u011fi de\u011fi\u015fti\u011finde URL&#8217;lerini de de\u011fi\u015ftirme<\/strong> sanat\u0131d\u0131r. B\u00f6ylece hem taray\u0131c\u0131 hem CDN uzun TTL ile agresif \u00f6nbellekleme yapabilir, hem de yeni s\u00fcr\u00fcmleriniz milisaniyeler i\u00e7inde devreye girer. Daha \u00f6nce <a href=\"https:\/\/www.dchost.com\/blog\/tarayici-ve-cdn-onbellekleme-neden-bu-kadar-kritik\/\">taray\u0131c\u0131 ve CDN \u00f6nbelleklemenin neden bu kadar kritik oldu\u011funu anlatt\u0131\u011f\u0131m\u0131z rehberde<\/a> performans taraf\u0131n\u0131 detayland\u0131rm\u0131\u015ft\u0131k; bu yaz\u0131da ise odak tamamen strateji: <strong>version query string<\/strong>, <strong>dosya yeniden adland\u0131rma (filename hashing)<\/strong> ve bunlar\u0131n <strong>deploy s\u00fcrecine entegrasyonu<\/strong>.<\/p>\n<p>DCHost olarak, hem k\u00fc\u00e7\u00fck WordPress sitelerinde hem de y\u00fcksek trafikli Laravel\/SPA projelerinde ayn\u0131 sorunu onlarca kez \u00e7\u00f6zd\u00fck: &#8220;CSS dosyam\u0131 g\u00fcncelledim ama baz\u0131 kullan\u0131c\u0131larda h\u00e2l\u00e2 eski tasar\u0131m g\u00f6r\u00fcn\u00fcyor&#8221; \u015fik\u00e2yeti. Bu yaz\u0131da, o \u015fik\u00e2yeti k\u00f6kten bitirecek, uzun vadede sizi yormayacak, CI\/CD s\u00fcre\u00e7lerinizle uyumlu cache busting modelini ad\u0131m ad\u0131m birlikte kurgulayal\u0131m.<\/p>\n<h2><span id=\"Temel_Mekanik_Tarayici_Onbellegi_CDN_ve_Origin_Arasindaki_Dans\">Temel Mekanik: Taray\u0131c\u0131 \u00d6nbelle\u011fi, CDN ve Origin Aras\u0131ndaki Dans<\/span><\/h2>\n<p>Cache busting&#8217;e girmeden \u00f6nce, k\u0131sa ama kritik bir \u00e7er\u00e7eve \u00e7izelim. \u00dc\u00e7 ana oyuncumuz var:<\/p>\n<ul>\n<li><strong>Taray\u0131c\u0131 \u00f6nbelle\u011fi<\/strong>: Kullan\u0131c\u0131n\u0131n cihaz\u0131nda, URL bazl\u0131 dosya saklar. Ayn\u0131 URL&#8217;ye tekrar istek geldi\u011finde, HTTP ba\u015fl\u0131klar\u0131na g\u00f6re ya direkt yerelden sunar ya da sunucuya ko\u015fulsuz\/ko\u015fullu istek atar.<\/li>\n<li><strong>CDN edge \u00f6nbelle\u011fi<\/strong>: D\u00fcnya geneline da\u011f\u0131lm\u0131\u015f d\u00fc\u011f\u00fcmlerde, yine URL bazl\u0131 dosya saklar. Cache-key&#8217;inde \u00e7o\u011fu zaman <strong>host + path + (baz\u0131 durumlarda) query string<\/strong> bulunur.<\/li>\n<li><strong>Origin (DCHost \u00fczerindeki hosting\/<a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a>\/<a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>nuz)<\/strong>: Uygulaman\u0131z\u0131n ger\u00e7ek dosyalar\u0131n\u0131n durdu\u011fu kaynak.<\/li>\n<\/ul>\n<p>\u0130deal senaryo \u015fudur: CSS\/JS gibi statik varl\u0131klara <strong>uzun TTL<\/strong> (<code>Cache-Control: max-age=31536000, immutable<\/code> gibi) verirsiniz, CDN ve taray\u0131c\u0131 bunlar\u0131 uzun s\u00fcre saklar, origin \u00fczerindeki y\u00fck\u00fcn\u00fcz dramatik \u015fekilde d\u00fc\u015fer. Ancak bu durumda tek bir \u015fart var: <strong>\u0130\u00e7erik de\u011fi\u015fti\u011finde URL de de\u011fi\u015fmeli.<\/strong> Bunu yapman\u0131n farkl\u0131 yollar\u0131 var; i\u015fte cache busting stratejileri tam olarak burada devreye giriyor.<\/p>\n<h2><span id=\"Cache_Busting_Yaklasimlari_Secenekleri_Masaya_Yatiralim\">Cache Busting Yakla\u015f\u0131mlar\u0131: Se\u00e7enekleri Masaya Yat\u0131ral\u0131m<\/span><\/h2>\n<h3><span id=\"1_Version_Query_String_stylecssv123_Mantigi\">1) Version Query String: style.css?v=123 Mant\u0131\u011f\u0131<\/span><\/h3>\n<p>En \u00e7ok g\u00f6r\u00fclen y\u00f6ntemle ba\u015flayal\u0131m. URL \u015fu hale getirilir:<\/p>\n<ul>\n<li><code>\/assets\/css\/style.css?v=1.0.3<\/code><\/li>\n<li><code>\/js\/app.js?ver=20240102<\/code><\/li>\n<\/ul>\n<p>Buradaki fikir \u00e7ok basit: <strong>Dosya ad\u0131 ayn\u0131 kal\u0131r, ancak query string i\u00e7indeki versiyon parametresi de\u011fi\u015ftik\u00e7e URL de de\u011fi\u015fmi\u015f say\u0131l\u0131r.<\/strong><\/p>\n<p><strong>Art\u0131lar\u0131:<\/strong><\/p>\n<ul>\n<li>Uygulama kodunda basit\u00e7e bir versiyon de\u011fi\u015fkeni tan\u0131mlamak \u00e7o\u011fu framework ve CMS i\u00e7in \u00e7ok kolayd\u0131r.<\/li>\n<li>Dosya sistemi taraf\u0131nda yeni dosya \u00fcretmenize gerek kalmaz; hep ayn\u0131 <code>style.css<\/code> \u00fcst\u00fcne yazabilirsiniz.<\/li>\n<li>Klasik projelerde, k\u00fc\u00e7\u00fck WordPress\/PHP sitelerinde h\u0131zl\u0131ca devreye al\u0131nabilir.<\/li>\n<\/ul>\n<p><strong>Eksileri:<\/strong><\/p>\n<ul>\n<li>Baz\u0131 CDN&#8217;ler, varsay\u0131lan konfig\u00fcrasyonda <strong>query string&#8217;i cache-key&#8217;e dahil etmez<\/strong> veya sadece belirli parametreleri dikkate al\u0131r. Bu durumda <code>?v=123<\/code> ile <code>?v=124<\/code> ayn\u0131 cache entry&#8217;sini kullanabilir.<\/li>\n<li>Taray\u0131c\u0131 taraf\u0131nda \u00e7o\u011funlukla i\u015fe yarar ama <strong>CDN \u00f6n\u00fcnde yanl\u0131\u015f konfig\u00fcre edilmi\u015fse<\/strong> beklenmedik &#8220;eski dosya&#8221; sorunlar\u0131 \u00e7\u0131kabilir.<\/li>\n<li>Dosyan\u0131n i\u00e7eri\u011fi b\u00fcy\u00fck \u00f6l\u00e7\u00fcde de\u011fi\u015fmese de, <strong>s\u00fcr\u00fcm numaras\u0131 de\u011fi\u015ftirdi\u011finiz her deploy&#8217;da t\u00fcm varl\u0131klar yeniden inmek zorunda kal\u0131r<\/strong>; bu da ilk ziyaret s\u00fcresini art\u0131rabilir.<\/li>\n<\/ul>\n<p>Version query string kullanacaksan\u0131z, mutlaka CDN taraf\u0131nda <strong>cache-key konfig\u00fcrasyonunu<\/strong> kontrol etmelisiniz. Bununla ilgili detaylar\u0131, <a href=\"https:\/\/www.dchost.com\/blog\/cdn-onbellekleme-cache-control-ve-edge-kurallari-wordpress-ve-woocommercede-tam-isabet-ayarlar\/\">CDN \u00f6nbellekleme, Cache-Control ve edge kurallar\u0131 rehberimizde<\/a> pratik \u00f6rneklerle anlatt\u0131k.<\/p>\n<h3><span id=\"2_Dosya_Yeniden_Adlandirma_style123css_ve_Filename_Hashing\">2) Dosya Yeniden Adland\u0131rma: style.123.css ve Filename Hashing<\/span><\/h3>\n<p>Daha modern ve uzun vadede \u00e7ok daha sa\u011fl\u0131kl\u0131 y\u00f6ntem: <strong>dosyan\u0131n ad\u0131na versiyon (tercihen hash) g\u00f6mmek<\/strong>.<\/p>\n<ul>\n<li><code>\/assets\/css\/style.1.0.3.css<\/code><\/li>\n<li><code>\/assets\/css\/style.3f2a9c1.css<\/code> (i\u00e7erik hash&#8217;i)<\/li>\n<li><code>\/js\/app.9b8e7f.min.js<\/code><\/li>\n<\/ul>\n<p>Burada prensip \u015fu: <strong>\u0130\u00e7erik de\u011fi\u015firse hash de\u011fi\u015fir, hash de\u011fi\u015firse dosya ad\u0131 de\u011fi\u015fir.<\/strong> Yani, dosyan\u0131n yeni s\u00fcr\u00fcm\u00fc URL baz\u0131nda tamamen farkl\u0131d\u0131r. Bu, CDN ve taray\u0131c\u0131 \u00f6nbelle\u011fi a\u00e7\u0131s\u0131ndan en sa\u011flam \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p><strong>Art\u0131lar\u0131:<\/strong><\/p>\n<ul>\n<li>CDN&#8217;lerin b\u00fcy\u00fck \u00e7o\u011funlu\u011fu <strong>query string&#8217;ten ba\u011f\u0131ms\u0131z olarak path&#8217;i cache-key&#8217;in ana par\u00e7as\u0131<\/strong> olarak kullan\u0131r. Dosya ad\u0131 de\u011fi\u015fti\u011finde, yeni entry garanti edilir.<\/li>\n<li>\u0130\u00e7erik de\u011fi\u015fmeyen dosyalar i\u00e7in <strong>hash de\u011fi\u015fmedi\u011fi s\u00fcrece ayn\u0131 URL korunur<\/strong>. B\u00f6ylece sadece de\u011fi\u015fen varl\u0131klar yeniden indirilir.<\/li>\n<li><strong>Uzun TTL + immutable<\/strong> stratejisiyle m\u00fckemmel uyumludur. Yani 1 y\u0131l \u00f6nbellek verebilirsiniz ve sadece URL de\u011fi\u015fti\u011finde yeni i\u00e7erik devreye girer.<\/li>\n<\/ul>\n<p><strong>Eksileri:<\/strong><\/p>\n<ul>\n<li>Basit projelerde, manuel olarak bu isimleri takip etmek zahmetli olabilir.<\/li>\n<li>Genellikle bir <strong>build arac\u0131 veya pipeline<\/strong> kullanmay\u0131 gerektirir (Webpack, Vite, Laravel Mix, Gulp, Rollup vb.).<\/li>\n<li>Back-end taraf\u0131nda, <strong>orijinal isim \u2192 hash&#8217;li isim<\/strong> e\u015fle\u015ftirmesini bilmek i\u00e7in \u00e7o\u011fu zaman bir &#8220;asset manifest&#8221; okuma ihtiyac\u0131 do\u011far.<\/li>\n<\/ul>\n<p>Bug\u00fcn modern frontend d\u00fcnyas\u0131nda (React, Vue, Angular, SPA&#8217;ler) neredeyse t\u00fcm toolchain&#8217;ler, otomatik olarak <strong>filename hashing<\/strong> deste\u011fi sunuyor. Bu y\u00fczden, yeni bir projeye ba\u015fl\u0131yorsan\u0131z <strong>ilk tercihiniz mutlaka dosya yeniden adland\u0131rma \/ hashing olmal\u0131<\/strong>.<\/p>\n<h3><span id=\"3_Asset_Manifest_ve_HTML_Entegrasyonu\">3) Asset Manifest ve HTML Entegrasyonu<\/span><\/h3>\n<p>Dosya yeniden adland\u0131rma kulland\u0131\u011f\u0131n\u0131zda, canl\u0131 HTML \u00e7\u0131kt\u0131s\u0131nda do\u011fru dosya ad\u0131n\u0131 kullanmak kritik hale gelir. Bunu \u00e7\u00f6zmek i\u00e7in genellikle bir <strong>manifest dosyas\u0131<\/strong> \u00fcretilir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">{\n  &quot;style.css&quot;: &quot;style.3f2a9c1.css&quot;,\n  &quot;app.js&quot;: &quot;app.9b8e7f.min.js&quot;\n}\n<\/code><\/pre>\n<p>Back-end taraf\u0131nda bir yard\u0131mc\u0131 fonksiyon ile \u015funu yapars\u0131n\u0131z:<\/p>\n<ul>\n<li><code>asset('css\/style.css')<\/code> \u00e7a\u011fr\u0131s\u0131, HTML&#8217;de <code>\/assets\/css\/style.3f2a9c1.css<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 \u00fcretir.<\/li>\n<\/ul>\n<p>Bu yakla\u015f\u0131m, \u00f6zellikle Laravel, Symfony, Django gibi framework&#8217;lerde oturmu\u015f bir pratiktir. Statik site generator (Jamstack) kullananlarda da ayn\u0131 mant\u0131k ge\u00e7erlidir. DCHost \u00fczerinde statik site + CDN kombinasyonlar\u0131nda, bu modelle <strong>neredeyse s\u0131f\u0131r cache sorunu<\/strong> ile y\u0131llarca \u00e7al\u0131\u015fan projeler g\u00f6rmek m\u00fcmk\u00fcn.<\/p>\n<h2><span id=\"CDN_Acisindan_Cache_Busting_Cache-Key_Query_String_ve_Purge\">CDN A\u00e7\u0131s\u0131ndan Cache Busting: Cache-Key, Query String ve Purge<\/span><\/h2>\n<p>Cache busting&#8217;in as\u0131l s\u0131nav\u0131 CDN taraf\u0131nda verilir. Taray\u0131c\u0131 \u00e7o\u011fu zaman query string&#8217;e daha \u00f6zenli davran\u0131rken, CDN konfig\u00fcrasyonunda ufak bir hata sizi saatlerce u\u011fra\u015ft\u0131rabilir.<\/p>\n<h3><span id=\"Cache-Key_ve_Query_String_Politikalari\">Cache-Key ve Query String Politikalar\u0131<\/span><\/h3>\n<p>Bir\u00e7ok CDN, cache-key&#8217;in nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 \u015fu se\u00e7eneklerle y\u00f6netmenize izin verir:<\/p>\n<ul>\n<li><strong>T\u00fcm query string&#8217;leri yoksay<\/strong> (sadece path&#8217;e bak)<\/li>\n<li><strong>T\u00fcm query string&#8217;leri dahil et<\/strong><\/li>\n<li><strong>Belirli parametreleri (\u00f6r. v, ver, id) dahil et<\/strong><\/li>\n<li><strong>Belirli parametreleri hari\u00e7 tut<\/strong><\/li>\n<\/ul>\n<p>E\u011fer <strong>version query string<\/strong> ile cache busting yap\u0131yorsan\u0131z, cache-key&#8217;inize bu parametrelerin mutlaka dahil oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. Aksi halde <code>style.css?v=1<\/code> ve <code>style.css?v=2<\/code> CDN a\u00e7\u0131s\u0131ndan ayn\u0131 i\u00e7erik say\u0131labilir.<\/p>\n<p>Dosya yeniden adland\u0131rma (filename hashing) kullan\u0131yorsan\u0131z, CDN taraf\u0131nda <strong>query string&#8217;i \u00e7o\u011funlukla yoksayabilirsiniz<\/strong>. Bu da cache-key&#8217;inizi sadele\u015ftirir, varyasyon say\u0131s\u0131n\u0131 azalt\u0131r ve cache hit oran\u0131n\u0131 y\u00fckseltir.<\/p>\n<h3><span id=\"Purge_Invalidate_ve_TTL_Iliskisi\">Purge, Invalidate ve TTL \u0130li\u015fkisi<\/span><\/h3>\n<p>CDN&#8217;ler, genellikle \u015fu yollarla \u00f6nbelle\u011fi temizlemenize izin verir:<\/p>\n<ul>\n<li><strong>URL bazl\u0131 purge<\/strong>: Belirli bir dosyan\u0131n cache&#8217;ini silersiniz.<\/li>\n<li><strong>Prefix (path) bazl\u0131 purge<\/strong>: <code>\/assets\/css\/<\/code> alt\u0131ndaki her \u015feyi temizlersiniz.<\/li>\n<li><strong>&#8220;Purge everything&#8221;<\/strong>: T\u00fcm zone&#8217;un \u00f6nbelle\u011fini bo\u015falt\u0131rs\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Do\u011fru kurulmu\u015f bir cache busting stratejisinde, asl\u0131nda CDN purge i\u015flemine <strong>pek az ihtiya\u00e7 duyars\u0131n\u0131z<\/strong>. \u00c7\u00fcnk\u00fc:<\/p>\n<ul>\n<li>Yeni deploy&#8217;da <strong>yeni dosya isimleri\/URL&#8217;leri<\/strong> \u00fcretilir.<\/li>\n<li>Eski URL&#8217;ler bir s\u00fcre daha CDN ve taray\u0131c\u0131 \u00f6nbelleklerinde kalmaya devam eder ama art\u0131k kimse o URL&#8217;leri HTML i\u00e7inde referans etmiyordur.<\/li>\n<li>Dolay\u0131s\u0131yla <strong>&#8220;zombi&#8221; cache entry&#8217;leri<\/strong> kimsenin can\u0131n\u0131 yakmadan TTL&#8217;leri dolunca otomatik temizlenir.<\/li>\n<\/ul>\n<p>Yine de kritik g\u00fcvenlik g\u00fcncellemelerinde (\u00f6rne\u011fin \u00f6nemli bir JS g\u00fcvenlik a\u00e7\u0131\u011f\u0131), varolan URL&#8217;leri acil olarak ge\u00e7ersiz k\u0131lmak isteyebilirsiniz. Bu durumlar i\u00e7in <strong>CDN purging API&#8217;lerini deploy pipeline&#8217;\u0131n\u0131za entegre etmek<\/strong> mant\u0131kl\u0131 olabilir; buna birazdan CI\/CD taraf\u0131nda de\u011finece\u011fiz.<\/p>\n<h2><span id=\"Tarayici_Onbellegi_Icin_En_Saglikli_Model_Uzun_TTL_Guvenilir_Cache_Busting\">Taray\u0131c\u0131 \u00d6nbelle\u011fi \u0130\u00e7in En Sa\u011fl\u0131kl\u0131 Model: Uzun TTL + G\u00fcvenilir Cache Busting<\/span><\/h2>\n<p>Y\u0131llard\u0131r g\u00f6rd\u00fc\u011f\u00fcm\u00fcz en yayg\u0131n &#8220;yanl\u0131\u015f \u00e7\u00f6z\u00fcm&#8221; \u015fu: Cache sorunlar\u0131 ya\u015fan\u0131yor, kimse nedenini tam anlam\u0131yor, sonunda CSS\/JS dosyalar\u0131n\u0131n ba\u015f\u0131na <code>Cache-Control: no-store, no-cache<\/code> yaz\u0131l\u0131yor. Evet, problemler biter; ama siteniz de ciddi \u015fekilde yava\u015flar.<\/p>\n<p>Oysa taray\u0131c\u0131 i\u00e7in en sa\u011fl\u0131kl\u0131 strateji genellikle \u015f\u00f6yle:<\/p>\n<ul>\n<li><strong>Statik varl\u0131klar (CSS, JS, font, logo, ikon, versiyonlanm\u0131\u015f g\u00f6rseller)<\/strong> i\u00e7in: <code>Cache-Control: max-age=31536000, immutable<\/code><\/li>\n<li><strong>HTML sayfalar\u0131<\/strong> i\u00e7in: Daha k\u0131sa TTL, <code>stale-while-revalidate<\/code> gibi direktiflerle dengeli bir \u00f6nbellekleme<\/li>\n<\/ul>\n<p>Bu model, <strong>&#8220;uzun TTL ver ama URL de\u011fi\u015firse bunu yeni dosya say&#8221;<\/strong> prensibiyle \u00e7al\u0131\u015f\u0131r. \u00d6zetle: Cache busting stratejiniz g\u00fcvenilir ise, TTL&#8217;i k\u0131sarak de\u011fil, <strong>TTL&#8217;i cesurca y\u00fckselterek<\/strong> performans kazan\u0131rs\u0131n\u0131z. Bu mant\u0131\u011f\u0131n performans etkilerini, <a href=\"https:\/\/www.dchost.com\/blog\/web-sitenizin-hizini-dogru-olcmek-gtmetrix-pagespeed-insights-ve-webpagetest-rehberi\/\">web sitenizin h\u0131z\u0131n\u0131 do\u011fru \u00f6l\u00e7me rehberimizle<\/a> birlikte test ederek net bir \u015fekilde g\u00f6rebilirsiniz.<\/p>\n<h2><span id=\"Deploy_Surecine_Entegrasyon_Manuel_Isten_Otomatik_ve_Guvenilir_Surece\">Deploy S\u00fcrecine Entegrasyon: Manuel \u0130\u015ften Otomatik ve G\u00fcvenilir S\u00fcrece<\/span><\/h2>\n<p>Cache busting&#8217;in ger\u00e7ekten sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131n tek yolu, <strong>deploy s\u00fcrecine s\u0131k\u0131 s\u0131k\u0131ya entegre<\/strong> etmektir. Elle s\u00fcr\u00fcm numaras\u0131 g\u00fcncellemek, FTP ile dosya atmak, random timestamp eklemek uzun vadede mutlaka hata \u00e7\u0131kar\u0131r. DCHost taraf\u0131nda g\u00f6rd\u00fc\u011f\u00fcm\u00fcz sa\u011flam projelerin ortak noktas\u0131, cache busting&#8217;in <strong>CI\/CD pipeline&#8217;\u0131n\u0131n do\u011fal bir par\u00e7as\u0131<\/strong> olmas\u0131.<\/p>\n<h3><span id=\"WordPressPHP_Projelerinde_Basit_Version_Query_String_Entegrasyonu\">WordPress\/PHP Projelerinde Basit Version Query String Entegrasyonu<\/span><\/h3>\n<p>Klasik bir WordPress sitesinde, ba\u015flang\u0131\u00e7 seviyesi bir \u00e7\u00f6z\u00fcm \u015fu olabilir:<\/p>\n<ul>\n<li><strong>functions.php<\/strong> i\u00e7inde tema veya child tema i\u00e7in bir <code>THEME_VERSION<\/code> sabiti tan\u0131mlars\u0131n\u0131z.<\/li>\n<li><code>wp_enqueue_style<\/code> ve <code>wp_enqueue_script<\/code> \u00e7a\u011fr\u0131lar\u0131nda bu versiyonu kullan\u0131rs\u0131n\u0131z.<\/li>\n<\/ul>\n<p>\u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">define('THEME_VERSION', '1.0.7');\nwp_enqueue_style('theme-style', get_stylesheet_uri(), [], THEME_VERSION);\n<\/code><\/pre>\n<p>Burada halen manuel g\u00fcncelleme ihtiyac\u0131 var. Bunu otomati\u011fe ba\u011flamak i\u00e7in:<\/p>\n<ul>\n<li>Versiyon olarak <strong>tema klas\u00f6r\u00fcn\u00fcn son de\u011fi\u015fiklik zaman\u0131<\/strong>n\u0131 kullanabilirsiniz.<\/li>\n<li>Ya da <strong>Git commit hash&#8217;ini<\/strong> environment de\u011fi\u015fkeni \u00fczerinden WordPress&#8217;e aktarabilirsiniz.<\/li>\n<\/ul>\n<p>Daha ileri a\u015famada, WordPress sitenizi DCHost \u00fczerindeki bir VPS&#8217;e al\u0131p, <a href=\"https:\/\/www.dchost.com\/blog\/github-actions-ile-vpse-otomatik-deploy-ve-zero-downtime-yayin\/\">GitHub Actions ile VPS&#8217;e otomatik deploy rehberimizde anlatt\u0131\u011f\u0131m\u0131z<\/a> gibi s\u00fcr\u00fcmleme ve deploy&#8217;u tek ak\u0131\u015fta birle\u015ftirdi\u011finizde, cache busting versiyon numaran\u0131z da pipeline&#8217;dan otomatik beslenecektir.<\/p>\n<h3><span id=\"Modern_Frontend_WebpackVite_ile_Filename_Hashing\">Modern Frontend (Webpack\/Vite) ile Filename Hashing<\/span><\/h3>\n<p>React, Vue, Angular veya modern bundler kullanan projelerde genellikle \u015fu pattern kullan\u0131l\u0131r:<\/p>\n<ol>\n<li>Build komutunu \u00e7al\u0131\u015ft\u0131r\u0131rs\u0131n\u0131z: <code>npm run build<\/code><\/li>\n<li>Bundler, <strong>hash i\u00e7eren dosya adlar\u0131<\/strong> \u00fcretir: <code>app.9b8e7f.js<\/code>, <code>style.3f2a9c1.css<\/code><\/li>\n<li>Bir <strong>manifest.json<\/strong> dosyas\u0131 olu\u015fur; orijinal isimleri hash&#8217;li isimlerle e\u015fler.<\/li>\n<li>Back-end (Laravel, Django, Node.js) manifest&#8217;i okuyarak do\u011fru URL&#8217;yi HTML&#8217;ye yazar.<\/li>\n<\/ol>\n<p>Bu yap\u0131y\u0131 DCHost \u00fczerindeki bir Laravel + Vue projesinde oturttu\u011funuzda, her deploy&#8217;da:<\/p>\n<ul>\n<li>Yeni hash&#8217;li dosyalar \u00fcretilir.<\/li>\n<li>Eski dosyalar sunucudan silinmese bile HTML art\u0131k onlar\u0131 referans etmez.<\/li>\n<li>CDN ve taray\u0131c\u0131, yeni URL&#8217;leri yepyeni dosyalar olarak g\u00f6r\u00fcr.<\/li>\n<\/ul>\n<p>Bu noktada CDN taraf\u0131nda yapman\u0131z gereken temel \u015fey, <strong>statik varl\u0131klar\u0131n\u0131z\u0131n TTL&#8217;ini y\u00fckseltmek<\/strong> ve <strong>cache-key&#8217;in path + file name \u00fczerinden tan\u0131mland\u0131\u011f\u0131ndan emin olmak<\/strong>. WordPress taraf\u0131nda benzer bir modeli nas\u0131l kurabilece\u011finizi, <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-icin-cdn-onbellek-kurallari-nasil-kurulur-woocommercede-html-cache-bypass-ve-edge-ayarlariyla-uctan-uca-hiz\/\">WordPress i\u00e7in CDN \u00f6nbellek kurallar\u0131 yaz\u0131m\u0131zda<\/a> ad\u0131m ad\u0131m anlatt\u0131k.<\/p>\n<h3><span id=\"CICD_Pipeline8217inda_Cache_Busting_Versiyonlamasi\">CI\/CD Pipeline&#8217;\u0131nda Cache Busting Versiyonlamas\u0131<\/span><\/h3>\n<p>Ger\u00e7ek rahatl\u0131k, versiyon bilgisini <strong>CI\/CD pipeline&#8217;\u0131n\u0131n \u00fcretti\u011fi tekil bir kimli\u011fe ba\u011flad\u0131\u011f\u0131n\u0131zda<\/strong> geliyor. \u00d6rnek stratejiler:<\/p>\n<ul>\n<li>Versiyon olarak <strong>Git commit hash<\/strong> (veya ilk 7 karakteri) kullanmak.<\/li>\n<li>Versiyon olarak <strong>Git tag<\/strong> ya da <strong>build numaras\u0131<\/strong> kullanmak.<\/li>\n<li>&#8220;release-2024.01.02-17.30&#8221; gibi tarih-saat tabanl\u0131 s\u00fcr\u00fcmler \u00fcretmek.<\/li>\n<\/ul>\n<p>Bu de\u011ferleri:<\/p>\n<ul>\n<li>Build s\u0131ras\u0131nda <strong>ortak bir <code>version.json<\/code> veya <code>.env<\/code> dosyas\u0131na<\/strong> yazabilirsiniz.<\/li>\n<li>Uygulaman\u0131z bu dosyay\u0131 okuyarak, t\u00fcm asset URL&#8217;lerinde ayn\u0131 versiyon de\u011ferini kullan\u0131r.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.dchost.com\/blog\/vpse-sifir-kesinti-ci-cd-nasil-kurulur-rsync-sembolik-surumler-ve-systemd-ile-sicacik-bir-yolculuk\/\">VPS&#8217;e s\u0131f\u0131r kesinti CI\/CD kurulumu yaz\u0131m\u0131zda<\/a> anlatt\u0131\u011f\u0131m\u0131z sembolik s\u00fcr\u00fcm klas\u00f6rleri (<code>releases\/2024-01-02-1730<\/code> gibi) ile birlikte d\u00fc\u015f\u00fcn\u00fcrseniz, asset URL&#8217;lerinizi de ayn\u0131 s\u00fcr\u00fcm string&#8217;iyle e\u015fleyebilir, hem kod hem statik dosyalar i\u00e7in tekil bir s\u00fcr\u00fcm mant\u0131\u011f\u0131 kurabilirsiniz.<\/p>\n<h2><span id=\"Blue-Green_ve_Canary_Dagitimlarda_Cache_Busting_Stratejisi\">Blue-Green ve Canary Da\u011f\u0131t\u0131mlarda Cache Busting Stratejisi<\/span><\/h2>\n<p>Blue-Green veya canary da\u011f\u0131t\u0131m yapan projelerde cache busting biraz daha kritik hale gelir. \u0130ki farkl\u0131 s\u00fcr\u00fcm\u00fcn <strong>ayn\u0131 alan ad\u0131n\u0131 ve ayn\u0131 CDN profilini<\/strong> kulland\u0131\u011f\u0131 durumlarda:<\/p>\n<ul>\n<li>Blue ortam\u0131 <strong>v1 hash&#8217;lerine<\/strong> sahip dosya isimleriyle yay\u0131n yapar.<\/li>\n<li>Green ortam\u0131 <strong>v2 hash&#8217;lerine<\/strong> sahip dosya isimleri \u00fcretir.<\/li>\n<li>Traffic switch (y\u00f6nlendirme) yap\u0131ld\u0131\u011f\u0131nda, taray\u0131c\u0131 ve CDN zaten yeni URL&#8217;leri farkl\u0131 i\u00e7erik olarak g\u00f6recektir.<\/li>\n<\/ul>\n<p>Yani sa\u011flam bir filename hashing stratejiniz varsa, Blue-Green ge\u00e7i\u015flerinizde <strong>&#8220;eski CSS kald\u0131, yeni JS gelmedi&#8221;<\/strong> gibi kar\u0131\u015f\u0131k durumlara \u00e7ok daha az maruz kal\u0131rs\u0131n\u0131z. Blue-Green mant\u0131\u011f\u0131n\u0131 daha geni\u015f perspektifte ele ald\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/blue-green-deployment-ile-woocommerce-ve-laravel-uygulamalarini-sifir-kesintiyle-guncellemek\/\">blue-green deployment rehberimiz<\/a>, cache busting taraf\u0131ndaki kararlar\u0131n\u0131z\u0131 da netle\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2><span id=\"DCHost_Altyapisinda_Onerilen_Mimari_CDN_Uzun_TTL_Hash8217li_Asset8217ler\">DCHost Altyap\u0131s\u0131nda \u00d6nerilen Mimari: CDN + Uzun TTL + Hash&#8217;li Asset&#8217;ler<\/span><\/h2>\n<p>DCHost taraf\u0131nda hem <a href=\"https:\/\/www.dchost.com\/tr\/web-hosting\">payla\u015f\u0131ml\u0131 hosting<\/a> hem de VPS\/dedicated m\u00fc\u015fterilerimize genellikle \u015fu mimariyi \u00f6neriyoruz:<\/p>\n<ul>\n<li>Web uygulamas\u0131 (WordPress, Laravel, SPA) DCHost \u00fczerinde h\u0131zl\u0131 diskli (tercihen NVMe) bir hosting veya VPS \u00fczerinde \u00e7al\u0131\u015f\u0131r.<\/li>\n<li>Statik varl\u0131klar\u0131n\u0131z (CSS, JS, g\u00f6rseller, fontlar) i\u00e7in <strong>CDN entegrasyonu<\/strong> yap\u0131l\u0131r.<\/li>\n<li>Build s\u00fcreciniz mutlaka <strong>filename hashing<\/strong> \u00fcreten bir toolchain i\u00e7erir ya da en az\u0131ndan <strong>versiyonlu klas\u00f6rleme<\/strong> (\u00f6r. <code>\/assets\/v1\/style.css<\/code>) uygulan\u0131r.<\/li>\n<li>CDN taraf\u0131nda <strong>uzun TTL + immutable<\/strong> politikas\u0131yla agresif \u00f6nbellekleme yap\u0131l\u0131r.<\/li>\n<li>Deploy pipeline&#8217;\u0131, gerekli durumlarda CDN purge API&#8217;lerini kullanacak \u015fekilde kurgulan\u0131r (kritik g\u00fcvenlik yamas\u0131 vb.).<\/li>\n<\/ul>\n<p>B\u00f6yle bir kurguda, <strong>origin \u00fczerindeki y\u00fck\u00fcn\u00fcz belirgin \u015fekilde d\u00fc\u015fer<\/strong>, \u00f6zellikle yo\u011fun kampanya d\u00f6nemlerinde CPU\/IO bask\u0131s\u0131 azal\u0131r. Bu da do\u011frudan daha d\u00fc\u015f\u00fck TTFB ve daha iyi Core Web Vitals anlam\u0131na gelir. Detayl\u0131 bir performans bak\u0131\u015f\u0131 isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/core-web-vitalsi-hosting-tarafinda-iyilestirmek\/\">Core Web Vitals&#8217;\u0131 hosting taraf\u0131nda iyile\u015ftirmek<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131z da iyi bir tamamlay\u0131c\u0131 olur.<\/p>\n<h2><span id=\"Sik_Yapilan_Hatalar_ve_Mini_Kontrol_Listesi\">S\u0131k Yap\u0131lan Hatalar ve Mini Kontrol Listesi<\/span><\/h2>\n<p>Ger\u00e7ek projelerde en s\u0131k g\u00f6rd\u00fc\u011f\u00fcm\u00fcz cache busting hatalar\u0131n\u0131 k\u0131sa bir liste halinde toparlayal\u0131m.<\/p>\n<p><strong>Yayg\u0131n hatalar:<\/strong><\/p>\n<ul>\n<li>Sadece CSS\/JS i\u00e7in versiyon kullan\u0131p, <strong>font ve ikon dosyalar\u0131n\u0131<\/strong> unutmaktan kaynaklanan k\u0131r\u0131k ikon sorunlar\u0131.<\/li>\n<li>CDN&#8217;de &#8220;dont cache query string&#8221; ayar\u0131 a\u00e7\u0131kken <strong>version query string<\/strong> ile cache busting yapmaya \u00e7al\u0131\u015fmak.<\/li>\n<li>Hem query string hem de filename hashing&#8217;i ayn\u0131 anda, plans\u0131z \u015fekilde kullan\u0131p gereksiz varyasyon yaratmak.<\/li>\n<li>HTML sayfalar\u0131na da \u00e7ok uzun TTL verip, <strong>HTML&#8217;deki asset URL&#8217;lerinin g\u00fcncellenmesini<\/strong> geciktirmek.<\/li>\n<li>Deploy \u00f6ncesi ve sonras\u0131 <strong>GTmetrix\/PageSpeed raporlar\u0131yla test etmeden<\/strong> konfig\u00fcrasyon de\u011fi\u015ftirmek.<\/li>\n<\/ul>\n<p><strong>Kendinize sorabilece\u011finiz 7 soruluk kontrol listesi:<\/strong><\/p>\n<ol>\n<li>Statik varl\u0131klar\u0131m i\u00e7in <strong>tekil bir versiyon stratejim<\/strong> var m\u0131? (query string, hash, versiyonlu klas\u00f6r vb.)<\/li>\n<li>CDN cache-key&#8217;inde <strong>hangi parametrelerin<\/strong> dikkate al\u0131nd\u0131\u011f\u0131n\u0131 biliyor muyum?<\/li>\n<li>CSS\/JS d\u0131\u015f\u0131nda, <strong>font, icon, SVG sprite<\/strong> gibi dosyalar\u0131m da ayn\u0131 stratejiye dahil mi?<\/li>\n<li>HTML sayfalar\u0131m\u0131n TTL&#8217;i, asset TTL&#8217;lerinden <strong>daha k\u0131sa ve kontroll\u00fc<\/strong> m\u00fc?<\/li>\n<li>CI\/CD pipeline&#8217;\u0131m cache busting versiyonumu <strong>otomatik \u00fcretiyor mu<\/strong>, yoksa h\u00e2l\u00e2 elle mi de\u011fi\u015ftiriyorum?<\/li>\n<li>Canl\u0131ya \u00e7\u0131kmadan \u00f6nce staging ortam\u0131nda, <strong>taray\u0131c\u0131 \u00f6nbelle\u011fini temizlemeden<\/strong> ger\u00e7ek kullan\u0131c\u0131 davran\u0131\u015f\u0131n\u0131 taklit ederek test yap\u0131yor muyum?<\/li>\n<li>De\u011fi\u015fiklik sonras\u0131 <strong>WebPageTest\/GTmetrix<\/strong> ile \u00f6nbellek hit oran\u0131n\u0131 ve TTFB\/TTI de\u011ferlerini kontrol ediyor muyum?<\/li>\n<\/ol>\n<h2><span id=\"Sonuc_Cache_Busting8217i_Bir_Kez_Dogru_Kur_Yillarca_Rahat_Et\">Sonu\u00e7: Cache Busting&#8217;i Bir Kez Do\u011fru Kur, Y\u0131llarca Rahat Et<\/span><\/h2>\n<p>Cache busting, ilk bak\u0131\u015fta sadece &#8220;CSS dosyas\u0131na versiyon parametresi ekleme&#8221; i\u015fi gibi g\u00f6r\u00fcnebilir; ama CDN, taray\u0131c\u0131, CI\/CD ve deploy mimarinizle birlikte d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczde <strong>t\u00fcm performans stratejinizin ta\u015f\u0131y\u0131c\u0131 kolonlar\u0131ndan biri<\/strong> haline geliyor. Do\u011fru kurguland\u0131\u011f\u0131nda:<\/p>\n<ul>\n<li>Statik varl\u0131klar\u0131n\u0131za g\u00f6n\u00fcl rahatl\u0131\u011f\u0131yla <strong>1 y\u0131la kadar TTL<\/strong> verebilir, CDN ve taray\u0131c\u0131 \u00f6nbelleklerinden maksimum fayda al\u0131rs\u0131n\u0131z.<\/li>\n<li>Yeni bir deploy yapt\u0131\u011f\u0131n\u0131zda, kullan\u0131c\u0131lara &#8220;ctrl+f5 yap&#8221; demek zorunda kalmazs\u0131n\u0131z.<\/li>\n<li>Origin (DCHost \u00fczerindeki hosting\/VPS\/dedicated sunucunuz) \u00fczerindeki y\u00fck azal\u0131r, ayn\u0131 kaynakla daha \u00e7ok trafi\u011fi g\u00fcvenle ta\u015f\u0131rs\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Yeni bir projeye ba\u015fl\u0131yorsan\u0131z, en ba\u015ftan <strong>filename hashing + manifest<\/strong> yakla\u015f\u0131m\u0131n\u0131 kurgulaman\u0131z\u0131, mevcut bir projede iseniz de en az\u0131ndan <strong>tutarl\u0131 bir version query string stratejisiyle<\/strong> ba\u015flaman\u0131z\u0131 \u00f6neririz. CDN taraf\u0131nda da <a href=\"https:\/\/www.dchost.com\/blog\/cdn-nedir-ne-zaman-gerekir-trafik-ve-lokasyona-gore-karar-rehberi\/\">CDN ne zaman gerekir ve nas\u0131l se\u00e7ilir<\/a> yaz\u0131m\u0131z\u0131 g\u00f6zden ge\u00e7irerek do\u011fru yap\u0131 ta\u015flar\u0131n\u0131 yerle\u015ftirebilirsiniz.<\/p>\n<p>E\u011fer DCHost \u00fczerinde \u00e7al\u0131\u015fan sitenizde hala &#8220;g\u00fcncel CSS&#8217;yi kimse g\u00f6rm\u00fcyor&#8221; sorunlar\u0131 ya\u015f\u0131yorsan\u0131z, altyap\u0131n\u0131z, CDN ayarlar\u0131n\u0131z ve deploy s\u00fcreciniz birlikte ele al\u0131nmal\u0131 demektir. \u0130sterseniz projenizin durumunu birlikte analiz edip, hem <strong>performans<\/strong> hem de <strong>operasyonel basitlik<\/strong> sa\u011flayacak bir cache busting + CDN mimarisini ad\u0131m ad\u0131m beraber kurgulayal\u0131m.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 CDN ve Taray\u0131c\u0131 \u00d6nbelle\u011finde Neyi \u00c7\u00f6zd\u00fc\u011f\u00fcm\u00fcz\u00fc Netle\u015ftirelim2 Temel Mekanik: Taray\u0131c\u0131 \u00d6nbelle\u011fi, CDN ve Origin Aras\u0131ndaki Dans3 Cache Busting Yakla\u015f\u0131mlar\u0131: Se\u00e7enekleri Masaya Yat\u0131ral\u0131m3.1 1) Version Query String: style.css?v=123 Mant\u0131\u011f\u01313.2 2) Dosya Yeniden Adland\u0131rma: style.123.css ve Filename Hashing3.3 3) Asset Manifest ve HTML Entegrasyonu4 CDN A\u00e7\u0131s\u0131ndan Cache Busting: Cache-Key, Query String ve Purge4.1 Cache-Key ve Query [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4020,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-4019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=4019"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4019\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/4020"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=4019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=4019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=4019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}