Htaccess का लोड समय प्रभाव


15

अपाचे पर सामान को संभालने की सामान्य दो संभावनाएं हैं:

  • htaccess फ़ाइल का उपयोग करके एक-एक करके फ़ोल्डरों के लिए कॉन्फ़िगरेशन बनाएं

  • htaccess को पूरी तरह से इस्तीफा देने और httpd.conf में सभी नियमों को लागू करने के लिए

Htaccess का उपयोग एक लोड समय समस्या है। मैं जानना चाहता हूं, लोड समय के संदर्भ में कितना महंगा है htaccess का उपयोग? क्या कोई परीक्षण हैं?

जवाबों:


22

सिफारिश अपाचे परियोजना से है:

सामान्य तौर पर, आपको केवल .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 फ़ाइलों को पार्स करना कितना महंगा है, यह उनकी जटिलता पर निर्भर करता है।

यह निर्धारित करने के लिए सावधानीपूर्वक बेंचमार्किंग ले जाएगा।


4

व्यय इस बात पर निर्भर करता है कि सर्वर विशेष रूप से कितना शक्तिशाली है, यह स्टोरेज I / O सबसिस्टम है और क्या इसमें कोई कैशिंग शामिल है।

इसका परीक्षण करने का तरीका यह है कि अपने सिस्टम को .htacess के साथ कॉन्फ़िगर करें और इसे उसी तरह से लोड करें जैसे आप किसी वेब सर्वर पर करते हैं। फिर .htaccess के बिना सिस्टम को कॉन्फ़िगर करें और समान परीक्षण चलाएं।

अपने कॉन्फ़िगर किए गए सिस्टम के परिणामों की तुलना करें और इसके विपरीत करें ।


1

मैं नहीं मानता कि आपके प्रश्न का एक भी सही उत्तर है। कई चर जो htaccess लोड समय को प्रभावित कर सकते हैं:

  • साइट फ़ोल्डर संरचना: प्रत्येक फोल्डर में सभी .htaccess लोड होने पर हर बार पृष्ठ खुला रहता है।
  • Htaccess फ़ाइल कितनी लंबी है: 200 लाइनें बनाम 3500 लाइनें? एक बड़ा अंतर है।
  • .htaccess कॉन्फ़िगरेशन: पुनर्लेखन और पुनर्निर्देशन नियम दूसरों की तुलना में अधिक भारी हो सकते हैं (और केवल वाले नहीं हैं)।
  • क्लाइंट साइड में नेटवर्क कनेक्शन लोड समय को प्रभावित कर सकता है। IMO, आप इसे एक से अधिक स्थानों से आज़मा सकते हैं और एक संदर्भ की तरह औसत समय ले सकते हैं।
  • ab - Apache HTTP सर्वर बेंचमार्किंग टूल आपकी मदद कर सकता है

और जानकारी:


1

मैंने .htaccess के साथ और उसके बिना परीक्षण किया है और वास्तव में गति या ओवरहेड में कोई अंतर नहीं पा सका है। दी मैं केवल 16 साइटें चलाता हूं और यह एक सुपर फास्ट सर्वर है इसलिए मेरे मामले में मिलीसेकेंड पर नज़र रखना लगभग असंभव है। सैकड़ों साइटों को चलाने वाले सर्वर पर ओवरहेड ध्यान देने योग्य हो सकता है, क्योंकि @Iain ने कहा कि परीक्षण करें और देखें।

मैं व्यक्तिगत रूप से एक वर्चुअल होस्ट के लिए .conf फ़ाइल का उपयोग करके सब कुछ करता हूं। ऐसा नहीं है कि यह मुझे सब कुछ पर पूर्ण नियंत्रण देता है, यह क्लीनर है और यह अपाचे की मेमोरी में एक बार लोड होता है। यहां तक ​​कि मेरे वर्डप्रेस नियम फिर से मेरे .conf फाइलों में हैं, इसलिए यह कभी नहीं टूट सकता है।


सुपर फास्ट कितना तेज है?
जेम्स किर्कबी

@James Kirkby मैं आपको सटीक सर्वर चश्मा बाद में भेजूंगा, अभी कार्यालय से बाहर। मैं प्रॉक्समोक्स कंटेनर में सब कुछ चला रहा हूं। मेरे वेब सर्वर और मेरे 16 वर्डप्रेस साइटों में Google पेजपीड पर 91-96 हैं और मैं हमेशा अभी भी ट्विक और अनुकूलन कर रहा हूं।
मिशेल

@JamesKirkby इसमें 2 x 6 कोर प्रोसेसर और 64 GB का राम रनिंग उबंटू 14.04, Apache 2.4.7 और PHP-FPM है। यह नोट का एक छोटा जानवर है, मैं इसके प्रदर्शन के साथ खुश हूँ।
मिशेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.