Como lidar com / limpar css / js agregados obsoletos?


17

Estou usando apenas o Drupal 7, agregado em CSS / JS, no entanto, a pasta de arquivos em que os arquivos css.gz e js.gz estão preenchendo em um ritmo bastante rápido e, embora tenha certeza de que levará algum tempo antes que ele comece a encher totalmente a unidade, agora é o melhor momento para entender a situação.

  • A contagem atual de arquivos em / js é 335
  • A contagem atual de arquivos em / css é 451

Existe algum método padrão que eu deveria estar empregando para lidar com essa situação? Eu preferiria uma solução que mantenha o drupal no circuito.

Além disso, vejo que muitos dos arquivos gz têm equivalentes não-gz. Existe algum motivo para os arquivos .css e .css.gz serem mantidos? Dedicação, talvez?

obrigado


Você pode confirmar que o cron está sendo executado?
mpdonadio

Certamente é
DanH 25/10

Respostas:


16

Isso ocorre por design, para que as páginas em cache com versões mais antigas dos arquivos não sejam quebradas. Veja esta edição encerrada .

TL; DR: Eles serão excluídos automaticamente 30 dias (ou seja qual for a sua drupal_stale_file_thresholdvariável definida) após serem criados via drupal_clear_css_cache()e drupal_clear_js_cache(). Portanto, a solução é modificar o drupal_stale_file_thresholdvalor para algo menor que o padrão de 30 dias.

  • Quando os arquivos antigos são excluídos

    Arquivos de cache antigos não são excluídos imediatamente quando a variável de pesquisa é esvaziada, mas são excluídos após um período definido por drupal_delete_file_if_stale (). Isso garante que os arquivos referenciados por uma página em cache ainda estejam disponíveis.

drupal_delete_file_if_stale() o padrão é 30 dias - portanto, se a) o Cron estiver sendo executado corretamente eb) você vir arquivos agregados com mais de 30 dias, terá um problema diferente.

variable_get('drupal_stale_file_threshold', 2592000)é a verificação de 30 dias. variable_set('drupal_stale_file_threshold', 172800)alteraria o tempo limite para dois dias. Em um site onde o tratamento de cache é estritamente controlado, o tempo pode ser ainda menor.

Fonte: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
Consulte drupal_delete_file_if_stale()para obter mais informações.

  • Existe algum motivo para os arquivos .css e .css.gz serem mantidos?

    Se a compactação CSS gzip estiver ativada, URLs limpas serão ativadas (o que significa que as regras de reescrita estão funcionando) e a extensão zlib estará disponível. Crie uma versão compactada em gzip deste arquivo. Este arquivo é veiculado condicionalmente em navegadores que aceitam gzip usando regras .htaccess.

Fonte: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7 (nos comentários da função)

Veja também drupal_build_js_cache()qual é quase idêntico a drupal_build_css_cache().


Obrigado, eu me sinto um pouco preguiçoso não ter olhei isso me agora;)
Clive

0

Após 4 anos, tenho que discordar da primeira resposta, onde o autor declara:

"Isso garante que os arquivos referenciados por uma página em cache ainda estejam disponíveis."

Talvez algumas coisas tenham sido alteradas / otimizadas no provisionamento de agregação de arquivos mais antigos, mas se eu excluir um arquivo mais antigo manualmente no servidor em files / advagg_js (que aparentemente ainda uso em um dos meus navegadores), o recarregamento subsequente da página será regenerado exatamente o mesmo arquivo novamente com o código-fonte javascript adicionado recentemente, como se drupal_build_js_cache()fosse executado nesse nome de arquivo agregado.

por exemplo. js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

Portanto, estou concluindo que definir um valor mais baixo significativo drupal_stale_file_thresholdnão causaria problemas, e mesmo a exclusão de todos os arquivos agregados seguidos de uma limpeza de cache forçará a regeneração dos agregados (testado e confirmado trabalhando em recarregamentos de páginas)


-5
  • Obtenha o módulo Regras
  • Adicione uma nova regra que será executada quando o cron estiver em execução
  • Como ação, selecione executar código php.
  • Escreva o código php

Pode ser algo como isto:

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

Essas funções php podem ajudá-lo a modificar o código como desejar.

Tenha muito cuidado antes de executar isso! Se não for usado corretamente, você pode excluir seu site! Antes de tentar esse código, teste-o em um host local

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.