Làm thế nào để xử lý / dọn dẹp css / js lỗi thời?


17

Tôi chỉ sử dụng Drupal 7 được tích hợp trong CSS / JS, tuy nhiên thư mục tệp nơi chứa các tệp css.gz và js.gz đang hoạt động với tốc độ khá nhanh và trong khi tôi chắc chắn rằng nó sẽ có lúc trước khi nó bắt đầu lấp đầy ổ đĩa, hãy dành thời gian tốt nhất để xử lý tình huống.

  • Số tập tin hiện tại trong / js là 335
  • Số tập tin hiện tại trong / css là 451

Có phương pháp tiêu chuẩn nào tôi nên sử dụng để đối phó với tình huống này không? Tôi muốn một giải pháp giữ cho drupal trong vòng lặp.

Ngoài ra, tôi thấy rằng nhiều tệp gz có bản sao không phải là gz. Có một số lý do cả hai tệp .css và .css.gz được lưu giữ? Suy thoái có thể?

Cảm ơn


Bạn có thể xác nhận rằng cron đang chạy?
mpdon Arena

Đó chắc chắn là
DanH

Câu trả lời:


16

Đây thực sự là do thiết kế để các trang được lưu trong bộ nhớ cache với các phiên bản cũ hơn của tệp không bị hỏng. Xem vấn đề kín này .

TL; DR: Chúng sẽ tự động bị xóa sau 30 ngày (hoặc bất kỳ drupal_stale_file_thresholdbiến nào của bạn được đặt thành) sau khi chúng được tạo thông qua drupal_clear_css_cache()drupal_clear_js_cache(). Vì vậy, giải pháp là sửa đổi drupal_stale_file_thresholdgiá trị thành một cái gì đó thấp hơn 30 ngày mặc định.

  • Khi nào các tập tin cũ bị xóa

    Các tệp bộ đệm cũ không bị xóa ngay lập tức khi biến tra cứu bị xóa, nhưng bị xóa sau một khoảng thời gian được đặt bởi drupal_delete_file_if_stale (). Điều này đảm bảo rằng các tệp được tham chiếu bởi một trang được lưu trong bộ nhớ cache sẽ vẫn có sẵn.

drupal_delete_file_if_stale() mặc định là 30 ngày - vì vậy nếu a) Cron đang chạy đúng và b) bạn thấy các tệp tổng hợp cũ hơn 30 ngày, bạn có một vấn đề khác.

variable_get('drupal_stale_file_threshold', 2592000)là kiểm tra 30 ngày. variable_set('drupal_stale_file_threshold', 172800)sẽ thay đổi thời gian chờ thành hai ngày. Trên một trang web nơi xử lý bộ đệm được kiểm soát chặt chẽ, thời gian có thể còn ngắn hơn.

Nguồn: http://api.drupal.org/api/drupal/includes!common.inc/feft/drupal_build_css_cache/7
Xem drupal_delete_file_if_stale()để biết thêm thông tin.

  • Có một số lý do cả hai tệp .css và .css.gz được lưu giữ?

    Nếu tính năng nén gzip CSS được bật, URL sạch sẽ được bật (có nghĩa là quy tắc ghi lại đang hoạt động) và tiện ích mở rộng zlib có sẵn sau đó tạo phiên bản được nén của tệp này. Tệp này được cung cấp có điều kiện cho các trình duyệt chấp nhận gzip bằng quy tắc .htaccess.

Nguồn: http://api.drupal.org/api/drupal/includes!common.inc/feft/drupal_build_css_cache/7 (Trong phần bình luận chức năng)

Cũng thấy drupal_build_js_cache()cái nào gần giống với drupal_build_css_cache().


Cảm ơn, tôi cảm thấy một chút lười biếng khi không tự mình nhìn lên điều này;)
Clive

0

Sau 4 năm, tôi phải không đồng ý với câu trả lời đầu tiên, trong đó tác giả tuyên bố:

"Điều này đảm bảo rằng các tệp được tham chiếu bởi một trang được lưu trong bộ nhớ cache sẽ vẫn khả dụng.".

Có thể chứng nhận mọi thứ đã được thay đổi / tối ưu hóa trong việc cung cấp tổng hợp các tệp cũ hơn, nhưng nếu tôi xóa một tệp cũ hơn bằng tay trên máy chủ tại tệp / advagg_js (mà tôi dường như vẫn sử dụng trong một trong các trình duyệt của mình), thì trang tải lại tiếp theo sẽ được tạo lại chính xác cùng một tệp một lần nữa với mã nguồn javascript được thêm gần đây, như thể drupal_build_js_cache()được thực thi trên tên tệp tổng hợp đó.

ví dụ. js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

Vì vậy, tôi kết luận rằng việc đặt mức thấp hơn đáng kể drupal_stale_file_thresholdsẽ không gây ra bất kỳ vấn đề nào và thậm chí xóa tất cả các tệp tổng hợp theo sau là xóa bộ đệm sẽ buộc tái tạo tổng hợp (đã được kiểm tra và xác nhận làm việc trên tải lại trang)


-5
  • Lấy mô-đun Quy tắc
  • Thêm một quy tắc mới sẽ được thực thi khi cron đang chạy
  • Là một hành động chọn thực thi mã php.
  • Viết mã php

Có thể là một cái gì đó như thế này:

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

Các hàm php này có thể giúp bạn sửa đổi mã theo ý muốn.

Hãy thật cẩn thận trước khi thực hiện điều này! Nếu không được sử dụng đúng, bạn có thể xóa trang web của bạn! Trước khi thử mã này, hãy kiểm tra nó trên localhost

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.