W3 Toplam Önbellek, CDN ve tema dosyaları [kapalı]


10

Son zamanlarda WordPress kurulumumun style.css dosyasını güncelledim. Değişiklik etkili oldu: yönetici olarak oturum açtığımda (blogum yöneticiye hiçbir zaman sitenin önbelleğe alınmış bir sürümü değil, "canlı" bir sürüm sunulması için ayarlandı) görebiliyorum.

Ancak blogum bir CDN aracılığıyla sunuluyor (W3 Total Cache kullanarak). CDN aracılığıyla değişiklikler etkili olmaz: CDN değiştirilmiş dosyaları temamdan sunmuyor. Bunları değiştirdikten sonra yüklediğim halde (Gösterge Tablosu> Performans> CDN> Tema dosyalarını yükle.

CDN'im AmazonCloud Front üzerinde çalışıyor. W3 Total Cache'de Minify devre dışı bırakıldı.

CDN'm aracılığıyla sunulan tema dosyası sıkıştırılmış bir sürüm: style.css.gzip

CDN'imdeki nesneleri “temizlemem” veya biraz daha beklemem gerekir mi (bir haftadan fazla oldu). Ve evet, kullandığım tarayıcının önbelleğini değiştirdiğimde değişikliklerin etkili olduğunu görüyorum. Yoksa özlediğim başka bir şey var mı?

Teşekkürler,

P.

Yanıtlar:


10

İkisinden biri

  1. Dosyalarınızı style.css?ver=xxx.xxxsürümlendirin (çağırarak ) ve CloudFront dağıtımınızın "İleri Sorgu dizeleri" nin açık olduğundan emin olun. Bu daha iyi bir seçenektir, çünkü yapmanız gereken tek şey sorgu dizesindeki sayıyı artırmaktır ve CloudFront bu dosyayı otomatik olarak getirecektir.

  2. Dosyalarınızı AWS Konsolu üzerinden manuel olarak geçersiz kılın (dağıtımınızı düzenlerken geçersiz kılma sekmesi bulunur)

'İleri Sorgu Dizeleri'ni açmak için aşağıdakileri yapın:

  • Cloudfront dağıtımınızı 'i' nin solundaki onay kutusunu işaretleyerek düzenleyin ve ardından araç çubuğundaki "dağıtım ayarları" düğmesini tıklayın
  • Davranışlar sekmesine gidin
  • Çizgiyi seçin ve 'Düzenle'yi tıklayın
  • "Yönlendirme sorgu dizelerini" Evet olarak değiştirin
  • "Evet, Düzenle" yi tıklayın

1
@kaiser yup, datetime sürümü olarak dosyayı sürümlendirmenin en iyi yoludur. Ancak yine de CloudFront'da "İleri Sorgu Dizeleri" seçeneğinin açık olduğundan emin olmanız gerekir, aksi takdirde güzel hazırlanmış sürüm numaranız yok sayılır: P
anu

Teşekkür ederim. Bu prosedüre aşina olmadığım için size iki sorum var. 1) "Sürümlü" dosyaların adı tam olarak verdiğiniz örneğe uygun olmalıdır (soru işareti, eşit işaretler ve tüm "x" işaretlerini benim seçtiğim sayılarla değiştirmeli) değil mi? 2) CLoudFront için AWS konsolumda, blogum için oluşturduğum dağıtımın hemen yanındaki tablonun solundaki “I” işaretini tıklıyorum. Bu, dağıtım ayarlarına erişmeme izin veriyor. Orada "İleri Sorgu Dizeleri" nin "yanlış" olduğunu görebiliyorum. Bu "davranışı" aynı değerlerle ancak "For. Q. dizeleri" için "true" ile
eşlemeli miyim

1
1. evet ya da @ kaiser iyi anlam ama dosya adınızı eksik cevap kullanabilirsiniz. 2. Cevabı süreçle güncelleyeceğim
anu

8

Dosya içeriği değiştiğinde önbelleğe almayı önlemek için oldukça basit bir "hile" vardır: Dosyanızı değiştirdiğiniz en son tarih / saate ayarlanmış bir sürüm numarası ekleyin.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Bu, ?ver=0123456789başlığınızdaki style.css referans bağlantınıza eklenecektir . Sürüm numarası yalnızca dosya içeriği değiştirildiğinde değişiklik gösterir. Böylece a) sunucu tarafı önbellek b) tarayıcı önbellek ile mükemmel çalışan ve otomatik olarak yenilenen bir çözüm var.


Tamam, bu gerçekten ilginç bir seçenek: style.cssher değişiklikten sonra dosyamı manuel olarak sürümlendirme ihtiyacını ortadan kaldırıyor (bir noktada veya başka bir yerde yapmayı unutacağım). Şimdi sorabilirsem, bu kodu nereye ekleyebilirim? Dosyamı tahmin ederdim functions.php?
Parneix

Bu kodu nereye eklemeniz gerektiğini bilmiyorum. Sadece tema dosyalarınızda arama yapın ve style.css dosyasına yapılan "normal" çağrıyı değiştirin. Kısa bir güncelleme yapacağım, bu yüzden onu function.php dosyasına koyabilirsiniz (bu yine de orijinal çağrıyı kaldırmanız gerektiği anlamına gelir). Ve btw: Bu sadece @anu cevabına bir ektir. (Olumlu oylar hala takdir ediliyor :)
kaiser

1
Sorun değil! Bu kodun konumunun, kullanılan temaya bağlı olarak değişebileceğini çok iyi anlıyorum. Dosyama eklemeyi functions.phpbaşaracağım. @Anu tarafından sağlanan çözümün hala iyi bir tamamlayıcısı olduğunu düşünüyorum. Yardımın için çok teşekkürler.
Parneix

-1

kısa bir cevap ...

  1. Tüm tema dosyalarınızı silin ve yeniden yükleyin. silme işlemi CDN'yi temizler

  2. Evet, Temizle'yi deneyebilirsiniz - ancak Sil ve yeniden yükle genellikle daha hızlıdır.

  3. Ayrıca W3TC ve Amazon'daki ayarları kontrol edin. W3TC için varsayılan Önbellek genellikle 365 gündür. 31536000 saniye :)

Amazon'da .. uç noktaların CDN'yi yeniden sorgulaması için bir ayar olacaktır. Rackspace'de varsayılan 24 saat olduğunu biliyorum.


1
Bunu yapmanın çok daha iyi yolları var, cevabımı görün
anu

“Tüm tema dosyalarınızı silin ve yeniden yükleyin. silme eylemi CDN'yi temizliyor ”diyor. Sonra bunları WordPress kurulumuma tekrar yükle. Sonra sanırım yine de “Tema dosyalarını yükle” W3 Total Cache panosu üzerinden mi?
Parneix

1
@Parneix ciddi, gerekmedikçe her şeyi silmeyin. CDN'den her şeyi silmediğiniz sürece neredeyse kesinlikle çalışmaz. Eski CSS dosyanızı geçersiz kılmanın çok daha iyi yolları var
anu

1
Evet teşekkürler! Önerinizi iyi not ettim. Buraya geldiğim her yardımı gerçekten takdir ediyorum. Sadece sorunumu çözmekle kalmıyorum, aynı zamanda yeni şeyler de öğreniyorum.
Parneix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.