Eski toplu css / js işlemek / temizlemek nasıl?


17

Ben sadece CSS / JS toplama yerleşik Drupal 7 kullanıyorum, ancak css.gz ve js.gz dosyalarının canlı dosyaları klasörü oldukça hızlı bir şekilde dolduruyor ve eminim bir süre olacak sürücüyü tamamen doldurmaya başlamadan önce, şimdi durumun üstesinden gelmek için herhangi bir zaman.

  • / Js dosyasındaki geçerli dosya sayısı 335
  • / Css içindeki geçerli dosya sayısı 451

Bu durumla başa çıkmak için kullanmam gereken standart bir yöntem var mı? Drupal'ı döngüde tutan bir çözümü tercih ederim.

Ayrıca, gz dosyalarının çoğunun gz olmayan meslektaşları olduğunu görüyorum. Hem .css hem de .css.gz dosyalarının saklanmasının bir nedeni var mı? Degredasyon belki?

Teşekkürler


Cron'un çalıştığını doğrulayabilir misiniz?
mpdonadio

Kesinlikle öyle
DanH

Yanıtlar:


16

Bu aslında tasarım gereğidir, böylece dosyaların eski sürümlerine sahip önbelleğe alınmış sayfalar bozulmaz. Bu kapalı konuya bakın .

TL; DR: ve drupal_stale_file_thresholdile oluşturulduktan sonra 30 gün (veya değişkeniniz ne olursa olsun) otomatik olarak silinir . Dolayısıyla çözüm, değeri varsayılan 30 günden daha düşük bir değere değiştirmektir .drupal_clear_css_cache()drupal_clear_js_cache()drupal_stale_file_threshold

  • Eski dosyalar ne zaman silinir

    Eski önbellek dosyaları, arama değişkeni boşaltıldığında hemen silinmez, ancak belirli bir süre sonra drupal_delete_file_if_stale () ile silinir. Bu, önbelleğe alınmış bir sayfanın başvuruda bulunduğu dosyaların hala kullanılabilir olmasını sağlar.

drupal_delete_file_if_stale() varsayılan değer 30 gündür - yani a) Cron düzgün çalışıyorsa ve b) 30 günden daha eski toplu dosyaları görürseniz farklı bir sorununuz vardır.

variable_get('drupal_stale_file_threshold', 2592000)30 günlük çek. variable_set('drupal_stale_file_threshold', 172800)zaman aşımını iki gün olarak değiştirir. Önbellek işlemenin sıkı bir şekilde denetlendiği bir sitede, zaman daha da kısa olabilir.

Kaynak: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
Daha drupal_delete_file_if_stale()fazla bilgi için bkz .

  • Hem .css hem de .css.gz dosyalarının saklanmasının bir nedeni var mı?

    CSS gzip sıkıştırması etkinleştirilirse, temiz URL'ler etkinleştirilir (bu, yeniden yazma kurallarının çalıştığı anlamına gelir) ve zlib uzantısı kullanılabilir, ardından bu dosyanın gzip edilmiş bir sürümünü oluşturun. Bu dosya, .htaccess kurallarını kullanarak gzip'i kabul eden tarayıcılara koşullu olarak sunulur.

Kaynak: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7 (İşlev yorumlarında)

Ayrıca drupal_build_js_cache()hangisinin neredeyse aynı olduğunu görün drupal_build_css_cache().


Teşekkürler, şimdi kendim bakmadım biraz tembel hissediyorum;)
Clive

0

4 yıl sonra, yazarın belirttiği ilk cevaba katılmıyorum:

"Bu, önbelleğe alınmış bir sayfa tarafından başvurulan dosyaların hala kullanılabilir olmasını sağlar."

Belki bazı dosyalar eski dosyaların toplanması sırasında değiştirildi / optimize edildi, ancak dosyalar / advagg_js (görünüşte hala tarayıcılarımdan birinde kullandığım) üzerinde eski bir dosyayı sunucuda manuel olarak silersem, sonraki sayfa yeniden yüklemesi yeniden oluşturuluyor drupal_build_js_cache()birleştirilmiş dosya adında yürütülmüş gibi, son eklenen javascript kaynak koduyla aynı dosya .

Örneğin. js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

Bu yüzden önemli bir düşük ayarlamanın drupal_stale_file_thresholdherhangi bir soruna neden olmayacağı sonucuna varıyorum ve hatta bir önbellek temizliğinin ardından tüm toplu dosyaların silinmesi, agregaların yeniden oluşturulmasını zorlayacaktır (sayfa yeniden yüklemelerinde çalışılan ve test edilen)


-5
  • Kurallar modülünü edinin
  • Cron çalışırken yürütülecek yeni bir kural ekleyin
  • Bir eylem olarak yürütmek php kodu seçin.
  • Php kodunu yazın

Böyle bir şey olabilir:

$dir = 'your/directory/';
  foreach(glob($dir.'*.*') as $v){
  unlink($v);
}

Bu php fonksiyonları istediğiniz gibi kodu değiştirmek için yardımcı olabilir.

Bunu yapmadan önce çok dikkatli olun! Doğru kullanılmazsa sitenizi silebilirsiniz! Bu kodu denemeden önce bir localhost üzerinde test edin

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.