सिफारिश अपाचे परियोजना से है:
सामान्य तौर पर, आपको केवल .htaccess फ़ाइलों का उपयोग करना चाहिए जब आपके पास मुख्य सर्वर कॉन्फ़िगरेशन फ़ाइल तक पहुंच न हो। ... एक आम गलत धारणा यह है कि उपयोगकर्ता प्रमाणीकरण और mod_rewrite निर्देशों को .htaccess
फाइलों में जाना चाहिए ।
इसलिए कृपया AllowOverride None
मुख्य httpd.conf (और / या आपके उपखंड Include
) में अपने सभी अन्य निर्देशों को सेट करें।
जब अपाचे आपके साथ कॉन्फ़िगर नहीं किया जाता है AllowOverride None
तो पहले से ही एक (मामूली) प्रदर्शन जुर्माना होता है, चाहे किसी भी .htaccess
फाइल का उपयोग न किया गया हो।
ऐसा इसलिए है क्योंकि प्रत्येक अनुरोध के लिए अपाचे को .htaccess
प्रत्येक (उप-) निर्देशिका में एक संभावित फ़ाइल की उपस्थिति के लिए जांच करने की आवश्यकता होगी जो अनुरोधित संसाधन के लिए अग्रणी है। उदाहरण के लिए जब किसी फ़ाइल को निर्देशिका / www / htdocs / उदाहरण से बाहर करने का अनुरोध किया जाता है, तो अपाचे को निम्न फ़ाइलों की तलाश करनी चाहिए:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
और इसलिए, उस निर्देशिका से प्रत्येक फ़ाइल एक्सेस के लिए, 4 अतिरिक्त फ़ाइल-सिस्टम एक्सेस हैं, भले ही उन फ़ाइलों में से कोई भी मौजूद न हो। (यदि AllowOveride / के लिए सेट है)
उस के लिए इस्तेमाल किया गया सिस्टम कॉल ( man 2 stat
) अपने आप में इतना महंगा नहीं है और आमतौर पर फाइल-सिस्टम कैश का उपयोग वास्तविक डिस्क को मतदान करने के बजाय किया जाता है, जो वास्तविक IO आवश्यकताओं को सीमित करता है, लेकिन फिर भी यह जोड़ सकता है, क्योंकि यह लेख तर्क देता है।
जब एक या अधिक वास्तविक .htaccess
फाइलें वास्तव में मौजूद होती हैं, तो अपाचे को अभी भी इसे open
पढ़ने और पढ़ने की जरूरत होती है ( एक और आईओ रीड ऑपरेशन चालू करना और आमतौर पर फाइल सिस्टम विशेषता को अपडेट करने के लिए एक आईओ राइट ऑपरेशन भी atime
) और तर्क लागू होने से पहले इसे पार्स कर दें।
इसके विपरीत जब आपके निर्देश मुख्य में होते हैं httpd.conf
, जिन्हें केवल एक बार पार्स करने के लिए अपाचे की आवश्यकता होती है, स्टार्टअप पर, प्रत्येक .htaccess
फ़ाइल को प्रत्येक अनुरोध के लिए फिर से व्याख्या करने की आवश्यकता होती है।
IO ऑपरेशंस के अलावा .htaccess फ़ाइलों को पार्स करना कितना महंगा है, यह उनकी जटिलता पर निर्भर करता है।
यह निर्धारित करने के लिए सावधानीपूर्वक बेंचमार्किंग ले जाएगा।