Wie gehe ich mit veralteten aggregierten CSS / JS um / bereinige sie?


17

Ich verwende nur Drupal 7, das in CSS / JS-Aggregation integriert ist. Der Ordner "files", in dem sich die Dateien "css.gz" und "js.gz" befinden, füllt sich jedoch ziemlich schnell, und ich bin mir sicher, dass es noch eine Weile dauern wird Bevor es anfängt, das Laufwerk vollständig zu füllen, ist jetzt so viel Zeit wie möglich, um die Situation in den Griff zu bekommen.

  • Die aktuelle Anzahl der Dateien in / js beträgt 335
  • Die aktuelle Anzahl der Dateien in / css beträgt 451

Gibt es eine Standardmethode, die ich anwenden sollte, um mit dieser Situation umzugehen? Ich würde eine Lösung vorziehen, die den Drupal auf dem Laufenden hält.

Darüber hinaus sehe ich, dass viele der gz-Dateien andere als gz-Dateien haben. Gibt es einen Grund, warum sowohl CSS- als auch CSS.gz-Dateien aufbewahrt werden? Degredation vielleicht?

Vielen Dank


Kannst du bestätigen, dass cron läuft?
mpdonadio

Es ist sicherlich
DanH

Antworten:


16

Dies ist eigentlich beabsichtigt, damit zwischengespeicherte Seiten mit älteren Dateiversionen nicht beschädigt werden. Siehe diese geschlossene Ausgabe .

TL; DR: Sie werden automatisch 30 Tage (oder auf was auch immer Ihre drupal_stale_file_thresholdVariable eingestellt ist) gelöscht , nachdem sie über drupal_clear_css_cache()und erstellt wurden drupal_clear_js_cache(). Die Lösung besteht also darin, den drupal_stale_file_thresholdWert auf einen Wert zu ändern, der unter den Standardwerten von 30 Tagen liegt.

  • Wann werden alte Dateien gelöscht?

    Alte Cache-Dateien werden nicht sofort gelöscht, wenn die Suchvariable geleert wird, sondern nach einem festgelegten Zeitraum von drupal_delete_file_if_stale () gelöscht. Dadurch wird sichergestellt, dass Dateien, auf die von einer zwischengespeicherten Seite verwiesen wird, weiterhin verfügbar sind.

drupal_delete_file_if_stale() Der Standardwert ist 30 Tage. Wenn also a) Cron ordnungsgemäß ausgeführt wird und b) aggregierte Dateien angezeigt werden, die älter als 30 Tage sind, liegt ein anderes Problem vor.

variable_get('drupal_stale_file_threshold', 2592000)ist der 30-Tage-Scheck. variable_set('drupal_stale_file_threshold', 172800)würde das Timeout auf zwei Tage ändern. Auf einer Site, auf der die Cache-Verarbeitung streng kontrolliert wird, kann die Zeit sogar noch kürzer sein.

Quelle: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
Siehe drupal_delete_file_if_stale()für weitere Informationen.

  • Gibt es einen Grund, warum sowohl CSS- als auch CSS.gz-Dateien aufbewahrt werden?

    Wenn die CSS-GZIP-Komprimierung aktiviert ist, werden saubere URLs aktiviert (was bedeutet, dass Umschreibregeln funktionieren) und die Erweiterung zlib ist verfügbar. Erstellen Sie dann eine GZIP-Version dieser Datei. Diese Datei wird unter bestimmten Bedingungen für Browser bereitgestellt, die gzip mit .htaccess-Regeln akzeptieren.

Quelle: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7 (In den Funktionskommentaren)

Sehen Sie auch, drupal_build_js_cache()was fast identisch ist mit drupal_build_css_cache().


Danke, ich fühle mich ein bisschen faul, als ich das jetzt nicht selbst nachgeschlagen habe;)
Clive

0

Nach 4 Jahren muss ich mit der ersten Antwort nicht einverstanden sein, wo der Autor sagt:

"Dadurch wird sichergestellt, dass Dateien, auf die von einer zwischengespeicherten Seite verwiesen wird, weiterhin verfügbar sind."

Möglicherweise wurden einige Dinge in der Aggregationsbereitstellung älterer Dateien geändert / optimiert. Wenn ich jedoch eine ältere Datei manuell auf dem Server unter files / advagg_js lösche (was ich anscheinend immer noch in einem meiner Browser verwende), wird das anschließende Neuladen der Seite neu gestartet Genau dieselbe Datei mit dem kürzlich hinzugefügten Javascript-Quellcode, als ob drupal_build_js_cache()sie für diesen aggregierten Dateinamen ausgeführt worden wäre.

z.B. js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

Ich schließe daraus, dass das Festlegen einer signifikanten drupal_stale_file_thresholdReduzierung keine Probleme verursachen würde, und selbst das Löschen aller aggregierten Dateien, gefolgt von einem Cache-Leeren, erzwingt eine Neubildung der Aggregate (getestet und bestätigt beim Neuladen von Seiten).


-5
  • Holen Sie sich das Modul Regeln
  • Fügen Sie eine neue Regel hinzu, die ausgeführt wird, wenn der Cron ausgeführt wird
  • Wählen Sie als Aktion PHP-Code ausführen.
  • Schreiben Sie den PHP-Code

Könnte so etwas sein:

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

Diese PHP-Funktionen können Ihnen helfen, den Code nach Ihren Wünschen zu ändern.

Seien Sie sehr vorsichtig, bevor Sie dies ausführen! Wenn nicht richtig verwendet, können Sie Ihre Website löschen! Bevor Sie diesen Code testen, testen Sie ihn auf einem lokalen Host

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.