Loading...

Operasyon · 8 dk okuma

CDN cache nasıl temizlenir, siteyi bozmadan

Değişikliği yayınladınız ama ziyaretçiler hâlâ eski hâli görüyor. Bu, cache'in tam olarak işini yapması — edge, kopyanın süresi dolana kadar onu tutar. Purge, edge'e o kopyayı unutmasını söyler. Bu rehber purge sırasında gerçekte ne olduğunu, tek URL / klasör / tüm varyantları temizlemenin farkını, "hepsini temizle"nin neden kaba bir alet olduğunu ve sürümlü dosya adlarının purge'ü nasıl gereksiz kıldığını anlatır.

Güncellendi

CDN cache nasıl temizlenir, siteyi bozmadan

Edge neden hâlâ eski dosyayı sunuyor

Bir ziyaretçi dosya istediğinde en yakın edge noktası geçerli bir kopyası olup olmadığına bakar. Varsa sunucunuza hiç sormadan anında cevaplar — CDN'in bütün amacı budur ve siteniz bu yüzden hızlıdır. "Geçerli"nin ne kadar süreceğini, edge dosyayı ilk çektiğinde origin'inizin gönderdiği cache başlıkları belirler; çoğu zaman Cache-Control: max-age.

Yani yeni sürümü yükleyip hâlâ eskisini görüyorsanız bozuk bir şey yok. Dosyayı origin'de değiştirdiniz ama edge, önceki kopyayı saklamasını söylediğiniz pencerenin içinde. Üç çıkış yolu var: süresinin dolmasını beklemek, şimdi purge etmek, ya da yeni bir URL altında yayınlayıp ortada bayat bir şey bırakmamak. Hangisini seçeceğiniz bu rehberin geri kalanı.

Exact, prefix, variants — en küçük çekici seçin

Exact purge tek bir URL'i kaldırır. Doğru varsayılan budur: /images/hero.jpg'i değiştirdiniz, /images/hero.jpg'i purge edersiniz. Kesin, anında ve geri kalan her şey sıcak kalır.

Prefix purge bir yolun altındaki her şeyi kaldırır — /assets/ altındaki tüm dosyaları temizler. Bütün bir dizini yeniden yazan bir deploy'dan sonra kullanın. Güçlüdür, o yüzden nişan alın: tek bir logo değişti diye /images/ purge etmek binlerce işe yarar nesneyi çöpe atar.

Variants purge aynı anahtarın her cache sürümünü temizler. Edge tek bir URL'in birkaç kopyasını tutabilir — sıkıştırılmış ve sıkıştırılmamış, ya da farklı cihaz varyantları — ve alttaki dosyayı değiştirdiyseniz yalnızca sizin tarayıcınıza denk geleni değil hepsinin gitmesini istersiniz. Purge'ün "bazı ziyaretçilerde işe yaramadığı" ama sizde yaradığı durumlarda atlanan seçenek budur.

Aynı üç seçenek komut satırından

# tek URL (olagan durum)
cdnctl purge --account <uuid> --path /images/hero.jpg

# birkac tanesi birden
cdnctl purge --account <uuid> --paths "/css/app.css,/js/app.js"

# bir klasorun altindaki her sey
cdnctl purge --account <uuid> --path /assets --type prefix

# bir anahtarin tum cache varyantlari
cdnctl purge --account <uuid> --path /index.html --type variants

# bu listeyi kaydet, sonraki deploylarda tekrar calistir
cdnctl purge --account <uuid> --paths "/,/sitemap.xml" --save

Ne zaman her şeyi temizlemeli (ve bedeli ne)

Tüm hesap cache'ini temizlemek site geneli bir değişiklikten sonra doğru karardır: yeniden tasarım, her sayfaya dokunan bir şablon düzenlemesi, CMS geçişi. Tek komuttur ve ne yaptığı konusunda dürüsttür — her şey gider.

Önce bedelini bilin. Tam purge'den sonra bir süre edge elinde hiçbir şey tutmaz; kullanıcıya yakın cevaplanan istekler artık origin'inize gider. Cache arkasında saniyede on isteği rahat karşılayan bir site, aniden hepsiyle birden yüzleşebilir. Küçük bir origin'de bu, hızlı olmakla zorlanmak arasındaki farktır. Kasıtlı olarak kaba bir alet olduğu için CLI onay ister.

Açık onay zorunlu — bu bilinçli

# butun hesap cache'ini temizle
cdnctl purge all --account <uuid> --yes

# tamamlanmasini izle
cdnctl purge all status --account <uuid>

Hiç çalıştırmanız gerekmeyen purge

En iyi invalidation stratejisi ona ihtiyaç duymamaktır. Bir dosyanın adı içeriği değiştiğinde değişiyorsa — app.a1b2c3.js, style.9f8e7d.css — deploy yeni URL'ler yayınlar. Eskiler hâlâ cache'tedir, zararsız ve referanssız; yeniler hiç cache'lenmemiştir, yani her ziyaretçi yeni sürümü anında alır. Her modern build aracı bunu sizin için yapar; varlık cache'inin güvenle bir yıla ayarlanabilmesinin sebebi de budur.

Geriye adı değişemeyen dosyalar kalır: HTML sayfalarınız, /sitemap.xml, robots.txt, JSON beslemeleri. Onlara kısa bir max-age verin ki kendiliğinden tazelensinler; değişikliğin hemen görünmesi gerektiğinde de açıkça purge edin. Pratikte sağlıklı bir kurulum deploy sonrası binlerce değil birkaç yol purge eder.

Purge neden işe yaramamış gibi göründü

"Purge hiçbir şey yapmadı" raporlarının neredeyse hepsi dört şeyden biridir ve hiçbiri edge'in hatalı olması değildir.

Kendi tarayıcınız da cache'lemiştir. Cache-Control tarayıcı için de geçerlidir; edge tazedir ama dizüstünüz değildir. Yükseltmeden önce gizli pencerede ya da cache kıran bir sorgu dizesiyle bakın.

Sunulandan farklı bir URL purge ettiniz. /sayfa ve /sayfa/ ayrı cache anahtarları olabilir; http ile https sürümleri de, takip parametresi eklenmiş bir URL de. Kullanıcılarınızın gerçekten istediği URL'i purge edin.

Tek varyantı purge ettiniz. Aynı dosyanın sıkıştırılmış ve sıkıştırılmamış kopyaları ayrı kayıtlardır — bazı ziyaretçiler yeniyi bazıları eskiyi görüyorsa variants tipiyle purge edin.

Ya da origin eskiyi yeniden sundu. Purge yalnızca edge'e unutmasını söyler; sonraki istek sunucunuzdan yeniden çeker. Kendi uygulamanızın ya da eklentinizin cache'i hâlâ eski sayfayı tutuyorsa edge sadakatle bayat kopyayı tekrar cache'ler. Önce uygulama cache'ini temizleyin, sonra edge'i purge edin.

Hatırlanacak bir iş değil, deploy'un parçası yapın

Her sürümden sonra elle purge etmek, birinin er ya da geç unutacağı bir adımdır — genelde de önemli olan sürümde. Boru hattına koyun: deploy başarılı olduktan sonra, adı hiç değişmeyen birkaç yol için purge çalıştırın. cdn.com.tr'de bunu panelden, REST API'den ya da bir CI işinde cdnctl ile yapabilirsiniz — terminalinizden de runner'dan da aynı komut. Kaydedilmiş yol listeleri (--save) bunu her seferinde yeniden yazdığınız bir liste olmaktan çıkarıp sakladığınız tek satıra dönüştürür.

Sık sorulan sorular

Purge ne kadar sürede etkili olur?

Hızlıdır — edge cache kaydını düşürür ve o URL için bir sonraki istek origin'inizden yeniden çeker. Anında olmayan şey kendi tarayıcı cache'inizdir; o aynı Cache-Control başlığıyla yönetilen ayrı bir kopyadır.

Tüm cache'i temizlemek zararlı mı?

Zararlı değil ama bedelsiz de değil: cache yeniden dolana kadar istekler kullanıcıya yakın karşılanmak yerine origin'inize ulaşır. Site geneli bir değişiklikten sonra doğru alet, tek bir düzenlenmiş görsel için yanlış alettir.

Purge ile hard refresh arasındaki fark ne?

Hard refresh (Ctrl+F5) yalnızca SİZİN tarayıcı kopyanızı temizler — sizin gördüğünüzü düzeltir, başkası için hiçbir şey yapmaz. Purge, her ziyaretçiye sunulan ortak edge kopyasını temizler.

Deploy sonrası otomatik purge edebilir miyim?

Evet — önerilen kurulum bu. Deploy boru hattınızın son adımı olarak purge API'sini çağırın ya da cdnctl çalıştırın; dosya adı değişmeyen yolları hedefleyin (HTML sayfalar, sitemap, beslemeler).