คำแนะนำจากโครงการ 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 ขึ้นอยู่กับความซับซ้อน
ที่จะใช้การเปรียบเทียบอย่างระมัดระวังเพื่อตรวจสอบ