คุณปรับปรุงประสิทธิภาพของ Drupal ได้อย่างไร


54

Drupal พัฒนาอย่างรวดเร็ว แต่ประสิทธิภาพไม่ดีเท่าที่ควร มันยากที่จะเข้าถึง 50 คำขอต่อวินาที

และมีการสืบค้น SQL จำนวนมากในหน้าเว็บอย่างง่าย หากคุณทดสอบเวลาที่ร้องขอของแบบฟอร์มที่ส่งใน Drupal.org จะใช้เวลาไม่กี่วินาทีในการทำให้เสร็จ

คุณปรับปรุงความเร็วเว็บไซต์ของคุณอย่างไร?


3
คุณค้นหาเว็บไซต์จริงหรือ ฉันนึกภาพไม่ออกเลยว่าไม่เคยพูดคุยกันมาก่อน
Letharion

1
ชำระเงินภาพนิ่งของฉันgoo.gl/30yi39จะช่วยให้คุณ
mikeytown2

คำตอบ:


61

การแคชการแคชและการแคช

ข้อเสนอแนะบางอย่างที่ฉันเคยให้กับคำถามที่คล้ายกันทำ

  1. วางVarnishหรือ reverse-proxy อื่นไว้ด้านหน้า http-deamon ของคุณน่าจะเป็นสิ่งที่ดีที่สุดที่คุณทำได้
  2. ระหว่าง DrupalCon Copehagen Rasmusระบุว่าการใช้แคช php opcode เช่นAPCเป็นหนึ่งในสิ่งที่ดีที่สุดที่คุณสามารถทำได้เพื่อเพิ่มความเร็วของ PHP โดยทั่วไป ปรับปรุงประสิทธิภาพด้วย PHP เวอร์ชันที่ใหม่กว่า นอกจากนี้ยังมีข้อดีเพิ่มเติมสำหรับการอัปเกรด PHP เมื่อคุณอัปเกรด Drupal ตั้งแต่วันที่ 6 ถึง 8 Drupal จะผ่านการเปลี่ยนแปลงครั้งใหญ่ไปสู่การวางแนวของวัตถุซึ่งเป็นการปรับปรุงประสิทธิภาพส่วนใหญ่ที่เกิดขึ้นในเวอร์ชัน PHP รุ่นใหม่กว่า
  3. Memcacheเป็นตัวเลือกยอดนิยมสำหรับการเร่งความเร็วแคชโดยใส่แคชลงในหน่วยความจำแทนแผ่นดิสก์
  4. Panels + Caching ร่วมกับการกระทำของ Cacheสามารถเพิ่มประสิทธิภาพได้อย่างมีนัยสำคัญแม้สำหรับผู้ใช้ที่ล็อกอินเนื่องจากสนับสนุนตรรกะที่ค่อนข้างซับซ้อน
  5. แคช Entityคือการเพิ่มความเร็วที่ดีและเป็นศูนย์ conf สำหรับทุกคนที่ใช้ Drupal 7
  6. ไซต์ที่เขียนหนักมีโซลูชัน "ที่ยอมรับดี" น้อยลง ตัวเลือกบางอย่างรวมถึง
    1. การย้ายการเขียนบ่อยครั้งโดยสิ้นเชิงเช่นสถิติอื่น ๆ เช่นการวิเคราะห์ของ Google
    2. การแคชการดำเนินการเขียนบ่อยครั้งด้วยโซลูชันที่กำหนดเองในบางสิ่งเช่น NodeJS ที่จะเขียนไปยัง DB หนึ่งครั้งทุก ๆ วินาที
    3. เสียสละศักดิ์สิทธิ์ACIDและใช้ฐานข้อมูลเช่นMongoDB (ดูความคิดเห็นของ Berdir ด้านล่าง)
    4. ทำคลัสเตอร์ฐานข้อมูล SQL ของคุณ อ่านจากฐานข้อมูลหนึ่งเขียนไปยังอีกฐานข้อมูลหนึ่ง นี่เป็นแบบดั้งเดิมของ D7 และPressflowสามารถช่วยได้ใน D6

ทั้งหมดนี้ได้รับการเพิ่มเข้ามา แต่ทั้งหมดนี้มีไว้สำหรับการอ่านแคชไม่เหมาะสำหรับไซต์ที่มีการเขียนจำนวนมาก
Bruce Dou

คุณไม่ได้พูดอะไรเกี่ยวกับการเขียน :) ฉันจะเพิ่มบางอย่างเกี่ยวกับมันในคำตอบของฉัน
Letharion

1
ชี้แจงเรื่อง MongoDB คุณไม่สามารถเปลี่ยนฐานข้อมูลที่สมบูรณ์ของคุณเป็น MongoDB MongoDB เป็นสิ่งที่แตกต่างไปจาก DBMS อย่าง MySQL และไม่ได้ใช้ SQL คุณสามารถแทนที่ส่วนประกอบที่ถอดเปลี่ยนได้บางส่วนเท่านั้นและใช้เพื่อเก็บชิ้นส่วนของข้อมูลของคุณใน MongoDB เช่นฟิลด์บันทึกบล็อกและอื่น ๆ
Berdir

@Letharion >> ทำคลัสเตอร์ฐานข้อมูล SQL ของคุณ อ่านจากฐานข้อมูลหนึ่งเขียนไปยังอีกฐานข้อมูลหนึ่ง Pressflow สามารถช่วยได้ สิ่งนี้จะสำเร็จได้อย่างไร
GoodSp33d

1
คำตอบที่ดี! แตกหัก หากต้องการเพิ่มสิ่งนี้ให้ดูที่โมดูลการรวม CSS / JSระดับสูงเนื่องจากความเข้าใจของฉันคือการรวมจะลดการร้องขอสำหรับไฟล์ CSS และ JS เดี่ยวซึ่งจะช่วยปรับปรุงประสิทธิภาพ
therobyouknow

23

เหล่านี้เป็นบันทึกจากประสบการณ์ของฉันและอาจแตกต่างจากสิ่งที่คนอื่นพบ ฉันใช้ LAMP stack มากและพิจารณาเหมือนกันในคำแนะนำของฉัน

กฎทั่วไปสำหรับการแคชที่ฉันทำตามโดยทั่วไป

  1. ดำเนินการเมื่อใช้หลายครั้ง
  2. อยู่กับข้อมูลเก่าเมื่อเป็นไปได้
  3. Clear Caches ไม่บ่อยนักและทำให้มันชัดเจนมาก
  4. เมื่อเป็นไปได้ทำการเปลี่ยนแปลงที่ระดับต่ำสุดในกอง LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib และโมดูลที่กำหนดเอง

ปรับปรุงประสิทธิภาพของไซต์ Drupal (ตามลำดับความซับซ้อนที่เพิ่มขึ้น)

  1. อัปเดตคอร์โมดูล contrib และธีมที่อัพเดตอยู่เสมอ ใช่มันเป็นเรื่องสำคัญ

  2. ติดตั้ง APC บนเซิร์ฟเวอร์ของคุณ (ย้ายไปด้านบนตามคำแนะนำจาก Letharion)

  3. การแคชหน้า: ผู้ดูแลระบบ / กำหนดค่า / พัฒนา / ประสิทธิภาพความแตกต่างระหว่างอายุการใช้งานแคชขั้นต่ำและการหมดอายุของหน้าแคช

  4. Block Caching https://drupal.org/project/blockcache_alterตัวเลือกการแคชสำหรับบล็อคทั้งหมด
  5. รวมไฟล์จาวาสคริปต์และ css - การปรับปรุงส่วนหน้า https://www.drupal.org/project/advagg
  6. ปิดการใช้งานโมดูลที่ไม่จำเป็น ทุกโมดูลจะเพิ่มจำนวนรหัสที่ต้องใช้สำหรับการโหลดหน้าเว็บ และยังเพิ่มจำนวนการค้นหา หากเป็นไปได้ให้ใช้โมดูลทั่วไปแทนโมดูลหลายตัวที่ทำหน้าที่เฉพาะ
  7. เนื้อหามุมมองแคช - การแคชเนื้อหาที่รับรู้สำหรับ Views https://www.drupal.org/project/views_content_cache
  8. ปิดใช้งานการบันทึก DB - ใช้https://drupal.org/project/syslog_ng
  9. ลดข้อผิดพลาด 404 - http://www.brokenlinkcheck.com/
  10. ตอบกลับอย่างรวดเร็ว 404 - https://drupal.org/project/fast_404 - ลองจัดการที่ระดับเซิร์ฟเวอร์
  11. การตรวจสอบด้านลูกค้า - https://www.drupal.org/project/clientside_validation
  12. บีบอัดรูปภาพ - https://www.drupal.org/project/imageapi_optimize
  13. Lazy Loading of Images - อย่าโหลดภาพที่ไม่จำเป็น - https://www.drupal.org/project/lazyloader
  14. ใช้ Sprite ชีต - https://www.drupal.org/project/spritesheets

  15. ตั้งค่าอายุการใช้งานแคชขั้นต่ำเป็นจำนวนที่สูงขึ้นและใช้โมดูลการล้างแคชเพื่อล้างแคชสำหรับหน้าเฉพาะ - เมื่อใดก็ตามที่ฉันแก้ไข / อัปเดตโหนดแคชทั้งหมดในหน้าสำหรับผู้ใช้ที่ไม่ระบุชื่อจะหายไป

  16. ใช้โมดูล Devel เพื่อดูข้อความค้นหา
  17. เขียนซ้ำแบบสอบถามผู้ชม / หลีกเลี่ยงการดูถ้ามันมากเกินไป
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM
  20. การทำโปรไฟล์และปรับฐานข้อมูล - https://www.drupal.org/project/dbtuner
  21. ใช้ Boostไม่ใช่ Bootstrap DB หากไม่จำเป็น https://drupal.org/project/boostสำหรับส่วนใหญ่ของไซต์ขนาดเล็กถึงปานกลาง Boost นั้นดีพอและคุณอาจไม่จำเป็นต้องใช้ Reverse Proxies
  22. ใช้ CDNs - https://www.drupal.org/project/cdnง่ายต่อการติดตั้ง
  23. หากตารางแคชของคุณมีการใช้งานขนาดใหญ่ Memcached - หากคุณสามารถติดตั้ง memcached และตั้งค่า RAM สำหรับมันจะไม่ซับซ้อนเท่าที่ฟัง
  24. Etags - กำหนดค่า Etags อย่างเหมาะสม https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. ใช้ Reverse Proxy Server - วานิช (อย่างน้อยสำหรับสินทรัพย์) ช่วยได้มากหากผู้ใช้ส่วนใหญ่ไม่ระบุชื่อ
  26. การบีบอัดการถ่ายโอน - เปิดใช้งานการบีบอัด gzip
  27. Keep Alive - ใช้การเชื่อมต่อแบบถาวรที่เป็นไปได้
  28. Progressive JPEGS -
  29. การแคชในโค้ด - บล็อกของ Eaton นั้นยอดเยี่ยม http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. ใช้การอุ่นแคช - https://www.drupal.org/project/cache_warmer - แคชอุ่นหน้าก่อนที่ผู้ใช้จะพบพวกเขา
  31. การกำหนดค่า Master Slave DB - https://www.drupal.org/project/autoslaveช่วยให้คุณตั้งค่าได้ง่ายขึ้น
  32. กลุ่มฐานข้อมูล - https://stackoverflow.com/questions/1163216/database-cluster-and-load-balancing
  33. โหลดบาลานเซอร์ - http://en.wikipedia.org/wiki/Load_balancing_(computing)
  34. ใช้ Heuristic Cache Warming - https://www.drupal.org/project/cache_graceful
  35. การแคชผู้ใช้ที่ได้รับการรับรองความถูกต้อง - https://www.drupal.org/project/authcache

reposting คำตอบที่ผมได้เขียนขึ้นสำหรับdrupal.stackexchange.com/questions/118990/... BTW มันถูกปิดโดยบอกว่ามันกว้างเกินไป ผมไม่แน่ใจว่าถ้ามีความแตกต่างมากในทั้งสองคำถาม :)
Gokul NK

18

โมดูลBoostยังมีประโยชน์มากมันสร้างแคชไฟล์แบบคงที่จากหน้าเว็บของคุณ ส่วนใหญ่เป็นเว็บไซต์ที่มีผู้ใช้งานจำนวนมากที่ไม่เปิดเผยตัวตน

Boost ให้การแคชหน้าแบบคงที่สำหรับ Drupal ซึ่งช่วยเพิ่มประสิทธิภาพและความสามารถในการปรับขยายที่สำคัญสำหรับไซต์ที่ได้รับปริมาณข้อมูลที่ไม่ระบุตัวตนเป็นส่วนใหญ่ สำหรับโฮสติ้งที่ใช้ร่วมกันนี่เป็นตัวเลือกที่ดีที่สุดของคุณในแง่ของการปรับปรุงประสิทธิภาพ บนเซิร์ฟเวอร์เฉพาะคุณอาจต้องการพิจารณาเคลือบเงาแทน

Apache ได้รับการสนับสนุนอย่างสมบูรณ์โดยใช้ Nginx, Lighttpd และ IIS 7 Boost จะแคช & gzip บีบอัด html, xml, ajax, css และ javascript เพิ่มตรรกะการหมดอายุแคชเป็นขั้นสูงมาก มันค่อนข้างง่ายที่จะมีช่วงเวลาแคชที่แตกต่างกันสำหรับส่วนต่างๆของเว็บไซต์ของคุณ ซอฟต์แวร์รวบรวมข้อมูลในตัวทำให้แน่ใจว่าเนื้อหาที่หมดอายุจะถูกสร้างใหม่อย่างรวดเร็วสำหรับการโหลดหน้าเว็บอย่างรวดเร็ว


1
Boost ใช้งานได้ดีสำหรับ Drupal 7 ในตอนนี้ ในโซลูชันการโฮสต์ที่ใช้ร่วมกันนี่เป็นวิธีที่ยอดเยี่ยมในการไป (เนื่องจากพวกเขามักไม่อนุญาตให้ใช้สารเคลือบเงา)
Sage

5

เป็นมูลค่าการกล่าวขวัญว่าถ้าคุณใช้ไดรเวอร์ฐานข้อมูล SQLIte คุณอาจต้องปิดการซิงโครไนซ์ดิสก์

/**
 * Implements hook_init().
 */
function HOOK_init() {
  db_query('PRAGMA synchronous = OFF');
}

ในการกำหนดค่าเซิร์ฟเวอร์บางอย่างมันจะปรับปรุงประสิทธิภาพอย่างมาก


2
เนื่องจากสิ่งนี้ปิดการใช้งานทุกครั้งที่โหลดฉันคิดว่าจะมีวิธีที่ดีกว่าในการปิดการใช้งานอย่างถาวร ควรใช้เวลาในการตรวจสอบ
Gokul NK

1
เป็นไปได้ที่จะทำในเว็บไซต์ / default / settings.php โดยการเพิ่มองค์ประกอบ 'init_commands' ให้กับอาร์เรย์ $ database ฉันพบตัวอย่างสำหรับ "PRAGMA synchronous = OFF" ที่นี่: bitacoles.enging.com/node/210
dinopmi

4

ความลับของประสิทธิภาพการทำงานของ Drupal นั้นคือการแคชและปฏิบัติตามแนวทางปฏิบัติที่ดี ข้อเสนอแนะ:

ส่วนท้ายของ Drupal

  • เปิดใช้งานการแคชในส่วนของประสิทธิภาพ
  • ตรวจสอบประสิทธิภาพและโมดูลตรวจสอบประสิทธิภาพและความสามารถในการปรับขยาย
  • ตรวจสอบDrupal 7 Performance Optimization และตัวเลือกรายการตรวจสอบ
  • ปิดใช้งานโมดูลที่ไม่ได้ใช้และไม่ได้ใช้งาน (เช่น Devel, Views UI, Rules UI เป็นต้น)
  • ปิดการใช้งานโมดูลที่ไม่เสถียร
  • ปิดการใช้งานสถิติ
  • ปิดการใช้งานโมดูลหลัก dblog และแทนที่ด้วยsyslog
  • ปิดการใช้งานโมดูลหลักของ Update Manager
  • Cron: ใช้ cron builtin ของ Drupal ไม่ใช่ Poormanscron (พิจารณาElysiaหรือUltimate cron)
  • Views: ใช้แคชสำหรับมุมมองที่เลเยอร์ต่างๆ (แบบสอบถามฐานข้อมูลมาร์กอัปตามเวลา)
  • บล็อก: ใช้การบล็อกแคชหากมุมมองของคุณเป็นบล็อก (ต่อหน้าผู้ใช้ ฯลฯ )
  • บล็อก: พิจารณาการปรับแต่งการตั้งค่าแคชต่อบล็อกโดยโมดูลBlock Cache Alter
  • พาเนล: ใช้แคชให้มากที่สุด (สำหรับ D7 ตรวจสอบโมดูลPCC & PHC )
  • Entity: เปิดใช้งานแคช Entity
  • เมื่อใช้หลายสภาพแวดล้อมให้พิจารณาโมดูลที่หายไปซึ่งสามารถปรับปรุงการโหลดหน้าเว็บ
  • เปิดใช้งานการแคชหน้าผู้ใช้ที่ผ่านการรับรองความถูกต้องด้วยโมดูลAuthcache
  • หลีกเลี่ยงการเปลี่ยนเส้นทางซึ่งทำให้ประสบการณ์ผู้ใช้ช้าลง
  • ปรับปรุงการทำให้แคชใช้ไม่ได้โดยใช้โมดูลการหมดอายุ
  • ใช้การทำโปรไฟล์ PHP ก่อนการผลิต (เช่นXDebug )

ส่วนหน้าของ Drupal

  • ลดขนาดคำขอ HTTP ให้เล็กที่สุดโดย:
    • เปิดใช้งานการรวม JS / CSS ในส่วนของประสิทธิภาพ
    • ใช้CSS Spritesเพื่อลดจำนวนคำขอรูปภาพ
    • ใช้รูปภาพขนาดเล็กเป็นข้อมูลแบบอินไลน์ (URIs ในสไตล์ชีท)
    • ใช้แผนที่ภาพเพื่อรวมหลายภาพเป็นภาพเดียว
    • ลองพิจารณาใช้การโหลดอิมเมจเพื่อดู (ดู: Image Lazyloader )
    • ติดตั้งโมดูล BigPipeเพื่อลดเวลาในการโหลด
    • พิจารณา Lazy loading เทียบกับการประเมิน Lazy
    • ดู: การใช้แคชของเบราว์เซอร์ - เปิดเผย!
  • ลองสร้าง JavaScript และ CSS ภายนอก (ในบางกรณีมันเร็วกว่า)
  • ลดขนาด JavaScript และ CSS (ดู: โมดูลที่รวดเร็ว ) หลีกเลี่ยงการอินไลน์
  • เมื่ออ้างอิง JS ให้ใช้อย่างใดอย่างหนึ่งdeferหรือasyncคุณลักษณะ
  • ลดจำนวน iframes ให้น้อยที่สุด
  • ปรับภาพ, แบบอักษร, CSS Sprites, ทำให้ favicon แคชได้น้อยและลดขนาดคุกกี้
  • ลดจำนวนองค์ประกอบ DOM และการอ้างอิงแคชกับองค์ประกอบที่เข้าถึงได้
  • ทำให้หน้าเว็บ 404 ของคุณโหลดเร็วขึ้นโดยใช้โมดูลFast 404
  • เปิดใช้งานทรัพยากร front-end รวมและการแคชที่มีขั้นสูง CSS / JS รวม
  • ใส่สไตล์ชีตที่ด้านบนและสคริปต์ที่ด้านล่าง
  • เพิ่มExpiresหรือส่วนหัวCache-ControlรวมถึงETagsเพื่อลดการตอบสนอง
  • ใช้ GET สำหรับ AJAX และทำให้แคชได้
  • โหลดล่วงหน้าและส่วนประกอบหลังการโหลดเพื่อใช้ประโยชน์จากเวลาที่เบราว์เซอร์ไม่ได้ทำงาน
  • บางครั้งการแยกส่วนประกอบข้ามโดเมนสามารถเพิ่มการดาวน์โหลดแบบขนานได้สูงสุด
  • อย่าขยายภาพใน HTML และเก็บส่วนประกอบไว้ต่ำกว่า 25k
  • หลีกเลี่ยงตัวกรอง, นิพจน์ CSS, องค์ประกอบ HTML ที่มี src ว่างเปล่าหรือ href
  • ใช้ reverse proxy เพื่อดีบักคำขอเว็บของคุณ (เช่นCharles )
  • ใช้เครื่องมือเช่นY-Slow และ PhantomJSสำหรับการตรวจสอบประสิทธิภาพขั้นพื้นฐาน
  • ใช้เครื่องมือGoogle PageSpeedเพื่อวิเคราะห์และเพิ่มประสิทธิภาพเว็บไซต์ของคุณ
  • อ่านเกี่ยวกับข้อกำหนดกำหนดเวลาการนำทาง W3C ( GitHub )

PHP

  • เปิดใช้งานการแคช PHP (เช่นOpCache , APC ) และการตั้งค่าปรับแต่ง
  • พิจารณาใช้ PHP-FPM แทน mod_php บวก Nginx แทน Apache

ฐานข้อมูล

เซิร์ฟเวอร์

  • ตรวจสอบข้อกำหนดของระบบที่แนะนำสำหรับ Drupal
  • ตรวจสอบการตั้งค่าเว็บเซิร์ฟเวอร์ที่แนะนำสำหรับ Drupal
  • ตรวจสอบการตั้งค่า PHP ที่แนะนำสำหรับ Drupal
  • ตรวจสอบว่าโฮสต์อยู่ในอุปกรณ์จัดเก็บข้อมูลที่รวดเร็ว (เช่น SSD)
  • ใช้เซิร์ฟเวอร์ที่รวดเร็วเชื่อถือได้โดยเฉพาะตรงข้ามกับโฮสติ้งที่ใช้ร่วมกัน
  • ติดตั้งRedisหรือmemcached (พร้อมการสนับสนุน igbinary) และกำหนดค่า Drupal เพื่อใช้งาน
  • กำหนด TTLs ที่ยาวขึ้นสำหรับเครื่องมือค้นหา (เช่น TTL ที่ 24 ชั่วโมงเพื่อหลีกเลี่ยงบ็อตที่ไปถึงเซิร์ฟเวอร์)
  • ลดการค้นหา DNS (ตรวจสอบว่าแคชไว้)

เว็บไซต์ที่มีปริมาณการใช้งานสูง

หากคุณคาดหวังว่าเว็บไซต์ของคุณจะมีปริมาณการใช้งานมาก พิจารณาใช้ CDN ด้วย

อ่านเพิ่มเติมได้ที่: ประสบการณ์การใช้งานจริงในการปรับขนาดและการจูนประสิทธิภาพ


แหล่งข้อมูลเพิ่มเติม:


3

มีหนังสือชื่อHigh Performance Drupalที่ให้แนวทางปฏิบัติที่ดีที่สุดตัวอย่างและคำอธิบายในเชิงลึกสำหรับการแก้ปัญหาเรื่องประสิทธิภาพและความสามารถในการปรับขนาด คุณจะได้เรียนรู้วิธีการใช้เทคนิคการเข้ารหัสและโครงสร้างพื้นฐานเพื่อการทำงานภายใน Drupal ประสิทธิภาพของแอพพลิเคชั่นฐานข้อมูลเว็บเซิร์ฟเวอร์และการวิเคราะห์ประสิทธิภาพ

ในบทความประสิทธิภาพและการปรับขนาดใน Drupal 7คุณสามารถหาตัวอย่างเกี่ยวกับ Drupal 6 และ Drupal 7 และรายการต่อไปนี้:

ประสิทธิภาพและความยืดหยุ่นของ Drupal 7 ที่น่าจับตามอง:


2

มีการปรับแต่งมากมายในการเพิ่มประสิทธิภาพเว็บไซต์ Drupal ของคุณ - แต่ไม่จำเป็นต้องมีทั้งหมด เราต้องมองหาทางเลือกและเทคนิคบางอย่างที่จะนำไปสู่แพลตฟอร์มการเพิ่มประสิทธิภาพของ Drupal แคชใช่มันเป็นวิธีการเพิ่มประสิทธิภาพเว็บไซต์ด้วยวิธีการที่แตกต่างกัน แต่ส่วนเสริมและเคล็ดลับเพิ่มเติมบางอย่างสามารถเพิ่มและปรับแต่งเว็บไซต์ของคุณโดยไม่ต้องยุ่งยากในการดำเนินการ

เราได้เผยแพร่บทความที่คล้ายกันไปยังเว็บไซต์ของเราเมื่อเร็ว ๆ นี้ซึ่งฉันเชื่อว่าอาจช่วยคุณในการปรับแต่งงาน

ที่มา: http://www.cloudreviews.com/blog/drupal-performance-optimization-tips


2

มีความเป็นไปได้ที่จะปรับปรุงความเร็ว Drupal ในระดับที่เหมาะสมโดยไม่ต้องติดตั้งโมดูลใหม่ ใช่ Drupal มีการกำหนดค่าประสิทธิภาพ

  1. คุณสามารถตั้งค่านี้ได้โดยไปที่: YourSiteDomain / admin / config / development / performance
  2. เปิดใช้งาน 'หน้าแคชสำหรับผู้ใช้ที่ไม่ระบุชื่อ' ภายใต้ Chaching
  3. อายุการใช้งานแคชขั้นต่ำ: 1 วัน (หากคุณไม่ทำการอัปเดตเป็นประจำ)
  4. วันหมดอายุของหน้าแคช: 1 วัน (หากคุณไม่ได้ทำการอัพเดทเป็นประจำ)
  5. เปิดใช้งาน 'บีบอัดหน้าแคช'
  6. เปิดใช้งาน 'รวมและบีบอัดไฟล์ CSS'
  7. เปิดใช้งาน 'ไฟล์ JavaScript รวม'

  8. เมื่อตั้งค่าการกำหนดค่านี้แล้วให้ไปที่: YourSiteDomain / admin / reports / status

  9. ตรวจสอบว่ามีปัญหาการอนุญาตสำหรับไดเรกทอรี 'css' และ 'js' หรือไม่
  10. แก้ไขสิทธิ์ตามที่กำหนดไว้ในหน้ารายงานสถานะ

และตอนนี้คุณก็ทำได้ด้วยการเพิ่มประสิทธิภาพความเร็วสำหรับเว็บไซต์ drupal 7 ของคุณ

มีเครื่องมือทดสอบความเร็วออนไลน์เล็กน้อยเพื่อตรวจสอบความเร็ว ตรวจสอบให้แน่ใจว่าได้ใช้หนึ่งในเครื่องมือตรวจสอบความเร็วและเรียกใช้การทดสอบก่อนอัปเดตการตั้งค่าข้างต้น และหลังจากคุณอัปเดตการตั้งค่าประสิทธิภาพแล้วให้ทดสอบความเร็วอีกครั้ง คุณจะเห็นการปรับปรุงอย่างแน่นอน

Pingdom และ HTTP Fox (ปลั๊กอิน FireFox) เป็นเครื่องมือที่ดีที่สุดในการตรวจสอบความเร็วของเว็บไซต์

การตั้งค่าข้างต้นไม่เพียง แต่แคชหน้าของคุณสำหรับผู้ใช้ที่ไม่ระบุชื่อ แต่ยังบีบอัดไฟล์ CSS และ JS ตัวอย่างถ้าเว็บไซต์ของคุณโหลด 80 ไฟล์โพสต์การตั้งค่าเหล่านี้จำนวนคำขอจะลดลงอย่างน้อย 50% ดังนั้นคุณจะมีการปรับปรุงความเร็ว 2 เท่าในเว็บไซต์ Drupal ของคุณ


2

ในฐานะนักพัฒนาแบ็กเอนด์เรามีห้องสำหรับปรับปรุงโค้ดของคุณเพื่อเพิ่มประสิทธิภาพของเว็บไซต์อยู่เสมอ หลักเกณฑ์บางประการสำหรับนักพัฒนาแบ็กเอนด์อาจเป็น:

1) ล้างตาราง watchdog ของคุณ

2) อย่าใช้ API ตัวแปรในทางที่ผิด

3) สร้างคำขอ HTTP ที่น้อยลงหรือดีกว่า

4) ทำให้ "โมดูลดอท" ของคุณสั้น

เมื่อพูดถึงฟอนต์เอนด์และผู้สร้างไซต์สามารถทำได้มากขึ้น แต่สิ่งสำคัญคือต้องคำนึงถึงประสิทธิภาพในทุกมุมมอง

ที่มา: ปรับให้เหมาะสมก่อนที่จะเผยแพร่


2

ไซต์ Drupal 7 ที่ไม่ได้เพิ่มประสิทธิภาพด้วย RAM ขนาด 2 GB สามารถให้บริการได้ประมาณ 20-25 คำขอต่อวินาทีเป็นที่น่าพอใจ หากคุณต้องการไปไกลกว่านั้นเว็บไซต์จะต้องมีการปรับแต่ง สิ่งที่คุณปรับแต่งขึ้นอยู่กับว่าผู้ใช้ส่วนใหญ่ในไซต์นั้นไม่ระบุชื่อหรือรับรองความถูกต้อง นี่คือสิ่งที่คุณสามารถทำได้เพื่อปรับปรุงประสิทธิภาพ:

ไซต์กำลังให้บริการผู้ใช้ส่วนใหญ่โดยไม่ระบุชื่อ:

1) ติดตั้งและกำหนดค่า APC, memcache และ entitycache อย่างแน่นอน

2) ใส่ Varnish proxy ไว้หน้าเว็บเซิร์ฟเวอร์ ใช้เวลาประมาณ 30 นาทีในการติดตั้งและกำหนดค่า แต่จะลดเวลาในการโหลดหน้าเว็บลงอย่างมาก ในความเป็นจริงวานิชสามารถจัดการได้ 300 คำขอต่อวินาทีบนเครื่อง 2 GB หากหน้าทั้งหมดถูกแคช ใช้โมดูลการหมดอายุเพื่อหมดอายุเฉพาะหน้าที่เลือกในการอัปเดต / ลบเนื้อหา

3) ใช้โมดูลการรวม CSS / JS ระดับสูงเพื่อรวมไฟล์ CSS และ JS ลองย้ายไฟล์ JS ทั้งหมดไปที่ด้านล่างของหน้า แต่โปรดทราบว่าสิ่งนี้อาจทำให้ไซต์ของคุณเสียหายดังนั้นควรนำไปใช้กับการผลิตหลังจากการทดสอบอย่างละเอียด นอกจากนี้ยังทำการทดลองกับ CSS ที่สำคัญยิ่งยวด จากประสบการณ์ของฉันมันจะลดเวลาในการโหลดหน้าเว็บลงประมาณครึ่งวินาที

4) CSS / JS / รูปภาพควรมีส่วนหัวที่หมดอายุในอนาคต สิ่งนี้จะช่วยให้มั่นใจได้ว่าเบราว์เซอร์จะไม่ขอ CSS / JS / รูปภาพเดียวกันซ้ำแล้วซ้ำอีก

5) ตรวจสอบให้แน่ใจว่าเว็บเซิร์ฟเวอร์ให้บริการหน้าที่ถูกบีบอัด / CSS / JS

หลังจากดำเนินการตาม 5 ขั้นตอนข้างต้นแล้วเซิร์ฟเวอร์ RAM ขนาด 2 GB ของคุณควรจะสามารถร้องขอ 50 เซิร์ฟเวอร์ต่อวินาทีได้อย่างง่ายดาย

ไซต์กำลังให้บริการผู้ใช้ที่ผ่านการรับรองความถูกต้องเป็นส่วนใหญ่:

การเพิ่มประสิทธิภาพไซต์ดังกล่าวมีความซับซ้อนมากขึ้น ไซต์ดังกล่าวอยู่ในหมวดหมู่ย่อยหนึ่งในสองหมวดหมู่เพื่อการเพิ่มประสิทธิภาพ:

(a) หน้าส่วนใหญ่ในเว็บไซต์เหมือนกันยกเว้น 1 หรือ 2 บล็อกที่มีข้อมูลเฉพาะของผู้ใช้ ตัวอย่างเช่นไซต์ Drupal Commerce

(b) หน้าส่วนใหญ่ได้รับการปรับแต่งอย่างสมบูรณ์สำหรับผู้ใช้ ตัวอย่างเช่นไซต์ Drupal Commons

หากเว็บไซต์ของคุณอยู่ในหมวดหมู่ (a) ให้ใช้เทคนิคส่วนใหญ่ที่เรากล่าวถึงสำหรับเว็บไซต์ที่ให้บริการผู้ใช้ส่วนใหญ่โดยไม่ระบุชื่อ ความแตกต่างเพียงอย่างเดียวคือสำหรับหน้าที่ไม่ใช่ผู้ดูแลระบบวานิชจะต้องลบคุกกี้ SESSION ออกจากส่วนหัวและแสดงหน้าแคช ใช้โมดูล AJAX Block เพื่อบล็อกเซิร์ฟเวอร์ด้วยข้อมูลเฉพาะผู้ใช้โดยใช้ AJAX วิธีนี้หน้าส่วนใหญ่จะให้บริการอย่างรวดเร็วโดยใช้วานิชจากนั้นข้อมูลเฉพาะผู้ใช้จะถูกแสดงผ่าน AJAX

หากเว็บไซต์ของคุณอยู่ในหมวดหมู่ (b) ให้ใช้โมดูล Authcache ฉันไม่ต้องการใช้ให้มากที่สุดเพราะต้องใช้การตั้งค่าและการบำรุงรักษาค่อนข้างน้อย แต่มันทำงานได้ดีจริงๆ มันจะไม่เร็วเท่ากับการใช้วานิช แต่มันจะสามารถจัดการ 50 คำร้องขอต่อวินาทีที่คุณกำลังมองหา

หากคุณกำลังมองหาที่จะไปเหนือกว่าสิ่งที่เราได้กล่าวถึงที่นี่แล้วมีลักษณะที่Drupal รายการตรวจสอบการเพิ่มประสิทธิภาพประสิทธิภาพ การเปิดเผย: มันเขียนโดยฉัน มันอ้างถึงรายการที่ครบถ้วนสมบูรณ์ของสิ่งต่าง ๆ ที่คุณสามารถทำได้เพื่อทำให้ไซต์ Drupal ของคุณโดดเด่นอย่างรวดเร็ว

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