วิธีจัดการ / ล้างข้อมูลที่ล้าสมัยรวม css / js?


17

ฉันใช้ Drupal 7 ที่สร้างขึ้นในการรวม CSS / JS เท่านั้น แต่โฟลเดอร์ไฟล์ที่ไฟล์ css.gz และ js.gz อยู่นั้นเต็มไปด้วยความเร็วที่ค่อนข้างรวดเร็วและในขณะที่ฉันแน่ใจว่ามันจะอยู่สักพัก ก่อนที่มันจะเริ่มต้นที่จะเติมไดรฟ์โดยสิ้นเชิงโปรดสละเวลาพอ ๆ กับการจัดการกับสถานการณ์

  • จำนวนไฟล์ปัจจุบันเป็น / js คือ 335
  • จำนวนไฟล์ปัจจุบันใน / css คือ 451

มีวิธีมาตรฐานที่ฉันควรใช้เพื่อจัดการกับสถานการณ์นี้หรือไม่? ฉันต้องการวิธีแก้ปัญหาที่ทำให้ drupal อยู่ในวง

นอกจากนี้ฉันเห็นว่าไฟล์ gz จำนวนมากมีไฟล์ที่ไม่ใช่ gz มีเหตุผลบางอย่างทั้งไฟล์. css และ. css.gz การลดลงอาจ?

ขอบคุณ


คุณสามารถยืนยันได้ว่า cron กำลังทำงานอยู่หรือไม่
mpdonadio

มันคือ
DanH

คำตอบ:


16

นี่คือการออกแบบเพื่อให้หน้าแคชที่มีไฟล์รุ่นเก่าไม่เสียหาย เห็นนี้ปัญหาปิด

TL; DR: พวกเขาจะถูกลบโดยอัตโนมัติ 30 วัน (หรือสิ่งที่คุณdrupal_stale_file_thresholdตัวแปรมีการตั้งค่า) หลังจากที่พวกเขาสร้างขึ้นผ่านทางและdrupal_clear_css_cache() 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 นั้นพร้อมใช้งานจากนั้นสร้างเวอร์ชัน gzipped ของไฟล์นี้ ไฟล์นี้ให้บริการตามเงื่อนไขกับเบราว์เซอร์ที่ยอมรับ gzip โดยใช้กฎ. htaccess

แหล่งที่มา: 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 ปีฉันต้องไม่เห็นด้วยกับคำตอบแรกที่ผู้เขียนระบุ:

"สิ่งนี้ทำให้มั่นใจได้ว่าไฟล์ที่อ้างอิงโดยหน้าที่แคชจะยังคงใช้ได้".

อาจมีการเปลี่ยนแปลงบางสิ่งบางอย่าง / ปรับให้เหมาะสมในการจัดเตรียมการรวมของไฟล์เก่า แต่ถ้าฉันลบไฟล์เก่าด้วยตนเองบนเซิร์ฟเวอร์ที่ไฟล์ / advagg_js (ซึ่งเห็นได้ชัดว่าฉันยังคงใช้ในเบราว์เซอร์ของฉัน) ไฟล์เดียวกันทั้งหมดอีกครั้งพร้อมด้วยซอร์สโค้ดจาวาสคริปต์ที่เพิ่งเพิ่มเข้าไปราวกับว่า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 เหล่านี้อาจช่วยให้คุณแก้ไขรหัสตามที่คุณต้องการ

ระวังให้มากก่อนที่จะดำเนินการนี้! หากไม่ได้ใช้งานถูกต้องคุณสามารถลบเว็บไซต์ของคุณ! ก่อนที่จะลองใช้รหัสนี้ทดสอบใน localhost

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.