ผลกระทบของความเร็วในการโหลดของ htaccess


15

โดยทั่วไปมีความเป็นไปได้สองอย่างในการจัดการสิ่งต่าง ๆ บน Apache:

  • ทำการกำหนดค่าสำหรับโฟลเดอร์หนึ่งโดยหนึ่งโดยใช้ไฟล์ htaccess

  • เพื่อยกเลิก htaccess อย่างสมบูรณ์และวางกฎทั้งหมดลงใน httpd.conf

การใช้ htaccess เป็นปัญหาความเร็วในการโหลด ฉันอยากรู้ว่าการโหลด htaccess มีค่าใช้จ่ายเท่าไร? มีการทดสอบอะไรบ้าง?

คำตอบ:


22

คำแนะนำจากโครงการ Apache คือ:

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

ดังนั้นโปรดตั้งค่าAllowOverride Noneและคำสั่งอื่น ๆ ทั้งหมดของคุณใน httpd.conf หลัก (และ / หรือส่วนย่อยที่คุณInclude)


เมื่อ Apache ไม่ได้รับการกำหนดค่าให้กับAllowOverride Noneคุณแล้วจะมีการปรับประสิทธิภาพ (เล็กน้อย) โดยไม่คำนึงว่า.htaccessจะใช้ไฟล์ใด ๆ ก็ตาม

สิ่งนี้เพราะสำหรับ Apache แต่ละคำขอทุกคนจะต้องตรวจสอบการมี.htaccessไฟล์ที่มีศักยภาพในทุก ๆ ไดเรกทอรีย่อยที่นำไปสู่ทรัพยากรที่ร้องขอ ตัวอย่างเช่นเมื่อไฟล์ถูกร้องขอจากไดเร็กทอรี / www / htdocs / ตัวอย่าง apache ต้องค้นหาไฟล์ต่อไปนี้:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

ดังนั้นสำหรับแต่ละการเข้าถึงไฟล์จากไดเรกทอรีนั้นจะมีการเข้าถึงระบบไฟล์เพิ่มเติมอีก 4 ระบบแม้ว่าจะไม่มีไฟล์เหล่านั้นอยู่ก็ตาม (หาก AllowOveride ตั้งไว้สำหรับ /)

การเรียกระบบที่ใช้สำหรับ ( man 2 stat) โดยตัวมันเองนั้นไม่ได้แพงและโดยทั่วไปจะใช้แคชของระบบไฟล์แทนการสำรวจดิสก์จริง จำกัด ความต้องการ IO ที่แท้จริง แต่ก็ยังสามารถเพิ่มได้ตามที่บทความนี้ระบุไว้


เมื่อ.htaccessไฟล์จริงหนึ่งไฟล์ขึ้นไปมีอยู่จริง apache ยังคงต้องการopenและอ่านมัน (เรียกการดำเนินการอ่าน IO อื่นและโดยปกติแล้วยังมีการดำเนินการเขียน IOเพื่ออัปเดตatimeแอตทริบิวต์ของระบบแฟ้ม) และแยกวิเคราะห์ก่อนจึงจะสามารถใช้ตรรกะในนั้นได้

ไม่เหมือนเมื่อคำสั่งของคุณอยู่ในหลักhttpd.confซึ่งต้องการเพียง apache ในการแยกวิเคราะห์เมื่อเริ่มต้นแต่ละ.htaccessไฟล์จะต้องตีความอีกครั้งสำหรับคำขอแต่ละครั้งและทุกครั้ง

แพงแค่ไหนนอกเหนือจากการปฏิบัติการ IO การแยกไฟล์. htaccess ขึ้นอยู่กับความซับซ้อน

ที่จะใช้การเปรียบเทียบอย่างระมัดระวังเพื่อตรวจสอบ


4

ค่าใช้จ่ายขึ้นอยู่กับประสิทธิภาพของเซิร์ฟเวอร์โดยเฉพาะอย่างยิ่งมันเป็นระบบย่อย I / O หน่วยเก็บข้อมูลและมีการแคชใด ๆ ที่เกี่ยวข้องหรือไม่

วิธีทดสอบคือกำหนดค่าระบบของคุณด้วย. htacess และโหลดทดสอบในลักษณะเดียวกับเว็บเซิร์ฟเวอร์อื่น ๆ จากนั้นกำหนดค่าระบบโดยไม่ต้อง. htaccess และรันการทดสอบเดียวกัน

เปรียบเทียบและเปรียบต่างผลลัพธ์สำหรับระบบที่กำหนดค่าของคุณ


1

ฉันไม่เชื่อว่ามีคำตอบเดียวสำหรับคำถามของคุณ มีตัวแปรหลายตัวที่อาจส่งผลต่อความเร็วในการโหลด htaccess:

  • โครงสร้างโฟลเดอร์ไซต์:. htaccess ทั้งหมดในแต่ละโฟลเดอร์ถูกโหลดทุกครั้งที่เปิดหน้าเว็บ
  • ไฟล์ htaccess นานเท่าใด: 200 บรรทัดเทียบกับ 3,500 บรรทัด มีความแตกต่างใหญ่
  • การกำหนดค่า. htaccess: กฎการเขียนและเปลี่ยนเส้นทางอาจหนักกว่ากฎอื่น ๆ (และไม่ใช่กฎข้อเดียว)
  • การเชื่อมต่อเครือข่ายในฝั่งไคลเอ็นต์อาจมีผลต่อความเร็วในการโหลด IMO คุณสามารถลองได้จากหลายที่และใช้เวลาเฉลี่ยเหมือนการอ้างอิง
  • ab - เครื่องมือเปรียบเทียบเซิร์ฟเวอร์ Apache HTTPสามารถช่วยคุณได้

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


1

ฉันได้ทดสอบด้วยและไม่ใช้. htaccess และไม่พบความแตกต่างของความเร็วหรือค่าใช้จ่ายใด ๆ ได้รับฉันทำงานเพียง 16 ไซต์และเป็นเซิร์ฟเวอร์ที่เร็วมากดังนั้นในกรณีของฉันการติดตามมิลลิวินาทีเป็นไปไม่ได้เกือบ บนเซิร์ฟเวอร์ที่ใช้งานเว็บไซต์หลายร้อยแห่งค่าใช้จ่ายอาจสังเกตได้ดังนั้น @Iain กล่าวว่าการทดสอบและดู

ฉันเองทำทุกอย่างโดยใช้ไฟล์. conf สำหรับโฮสต์เสมือนไม่ใช่. htaccess ที่ให้ฉันควบคุมทุกอย่างได้อย่างสมบูรณ์มันสะอาดขึ้นและโหลดครั้งเดียวลงในหน่วยความจำของ apache แม้แต่กฎการเขียนซ้ำของฉัน wordpress อยู่ในไฟล์. conf ของฉันดังนั้นจึงไม่สามารถทำลายได้


เร็วแค่ไหนเร็วสุด?
James Kirkby

@James Kirkby ฉันจะส่งรายละเอียดเซิร์ฟเวอร์ที่แน่นอนให้คุณในภายหลังออกจากสำนักงานทันที ฉันกำลังทำงานทุกอย่างในภาชนะ Proxmox เว็บเซิร์ฟเวอร์ของฉันและไซต์ WordPress 16 แห่งของฉันทั้งหมดมี 91-96 บน Google Pagespeed และฉันยังคงปรับแต่งและปรับปรุงอยู่เสมอ
MitchellK

@JamesKirkby มีตัวประมวลผลหลัก 2 x 6 ตัวและ RAM 64 Gb ที่ใช้ Ubuntu 14.04, Apache 2.4.7 และ PHP-FPM มันเป็นสัตว์เดรัจฉานตัวเล็ก ๆ ฉันดีใจกับประสิทธิภาพของมัน
MitchellK
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.