如何处理/清理过时的聚合CSS / JS?


17

我只使用内置于CSS / JS聚合中的Drupal 7,但是css.gz和js.gz文件所在的文件文件夹正在以相当快的速度填充,尽管我敢肯定这会需要一段时间在它完全充满驱动器之前,现在是任何时候处理这​​种情况的好时机。

  • / js中的当前文件数为335
  • / css中的当前文件数为451

我应该采用任何标准方法来处理这种情况吗?我更喜欢一个解决方案,使drupal处于循环中。

此外,我发现许多gz文件都有非gz副本。是否同时保留.css和.css.gz文件有什么原因?可能会gr废?

谢谢


您可以确认cron正在运行吗?
mpdonadio

当然是
DanH 2011年

Answers:


16

这实际上是设计使然,因此不会破坏包含较旧版本文件的缓存页面。看到这个封闭的问题

TL; DR:drupal_stale_file_threshold通过drupal_clear_css_cache()和创建后,它们将在30天后(或将您的变量设置为任何值)自动删除drupal_clear_js_cache()。因此,解决方案是将drupal_stale_file_threshold值修改为低于默认30天的值。

  • 什么时候删除了旧文件

    清空查询变量后,不会立即删除旧的缓存文件,而是在设置的时间段后通过drupal_delete_file_if_stale()将其删除。这样可以确保高速缓存页面引用的文件仍然可用。

drupal_delete_file_if_stale() 默认为30天-因此,如果a)Cron运行正常,并且b)看到聚合的文件早于30天,则您会遇到其他问题。

variable_get('drupal_stale_file_threshold', 2592000)是30天的支票。 variable_set('drupal_stale_file_threshold', 172800)会将超时更改为两天。在严格控制缓存处理的站点上,时间可能会更短。

来源:http : //api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
有关drupal_delete_file_if_stale()更多信息,请参见。

  • 是否同时保留.css和.css.gz文件有什么原因?

    如果启用CSS gzip压缩,则启用纯净URL(这意味着重写规则有效)并且zlib扩展可用,然后创建该文件的gzip版本。该文件有条件地提供给使用.htaccess规则接受gzip的浏览器。

来源:http : //api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7(在函数注释中)

也看到drupal_build_js_cache()这是几乎相同的drupal_build_css_cache()


谢谢,我现在还没有自己检查一下,我有点懒惰;)
克莱夫(Clive)

0

4年后,我不得不不同意第一个答案,即作者指出:

“这确保了缓存页面引用的文件仍然可用。”

也许可以确定/优化了旧文件的聚合设置,但是如果我在服务器上的files / advagg_js(我显然仍在其中的一个浏览器中使用)上手动删除了旧文件,则会重新生成随后的页面与最近添加的javascript源代码完全相同的文件,就像drupal_build_js_cache()在该聚合文件名上执行一样。

例如。 js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

因此,我得出的结论是,将其设置为较低的值drupal_stale_file_threshold将不会导致任何问题,即使删除所有聚合的文件,然后清除缓存,也将强制重新生成聚合(经过测试并确认可以重新加载页面)


-5
  • 获取规则模块
  • 添加将在cron运行时执行的新规则
  • 作为一个动作,选择执行php代码。
  • 编写PHP代码

可能是这样的:

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

这些php函数可能会帮助您根据需要修改代码。

执行此操作之前要非常小心!如果未正确使用,您可以删除您的网站!在尝试此代码之前,请在本地主机上对其进行测试

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.