2008-08-25 10 views
22

मुझे पता है कि बहुत सारी सकारात्मक चीजें हैं जो पुनः-लिखने को पूरा करती हैं। लेकिन क्या कोई नकारात्मक है? जाहिर है कि यदि आपके पास खराब लिखित नियम हैं तो आपको समस्याएं आ रही हैं। लेकिन क्या होगा यदि आपके पास उच्च मात्रा वाली साइट है और आप लगातार मॉड-रीराइट का उपयोग कर रहे हैं, तो क्या इसका प्रदर्शन पर महत्वपूर्ण प्रभाव पड़ता है? मैंने Google पर कुछ बेंचमार्क की त्वरित खोज की और मुझे बहुत कुछ नहीं मिला।मॉड-रिवाइट का उपयोग करते समय कोई नकारात्मक प्रभाव?

उत्तर

34

मैंने उन साइटों पर mod_rewrite का उपयोग किया है जो किसी भी महत्वपूर्ण प्रदर्शन समस्याओं के बिना लाखों/हिट/महीने प्राप्त करते हैं। आपको यह जानना होगा कि आपके नियमों के आधार पर कौन से पुनर्लेखन पहले लागू होते हैं।

mod_rewrite का उपयोग करना आपकी वर्तमान भाषा के साथ यूआरएल को पार्स करने से अधिक तेज़ है।

यदि आप प्रदर्शन के बारे में वास्तव में चिंतित हैं, तो .htaccess फ़ाइलों का उपयोग न करें, वे धीमे हैं। अपने अपाचे कॉन्फ़िगरेशन में अपने सभी पुनर्लेखन नियम रखें, जो स्टार्टअप पर केवल एक बार पढ़ा जाता है। .htaccess फ़ाइलों को प्रत्येक अनुरोध पर प्रत्येक.htaccess फ़ाइल को मूल फ़ोल्डर्स में पुनः-विश्लेषण किया जाता है।

+26

अच्छा जवाब, लेकिन मुझे यह इंगित करना चाहिए कि * .htaccess फ़ाइलों को सक्षम करना मुद्दा है, इनका उपयोग इतना नहीं है। यदि आप उन्हें पूरी तरह अक्षम नहीं करते हैं, तो आपके पास अभी भी प्रत्येक पथ सेगमेंट के लिए स्टेट-हिट है, भले ही आपके पास कहीं भी एक .htaccess फ़ाइल न हो। –

+3

'AllowOverride none' का उपयोग करके .htaccess अक्षम करें। – NateS

3

यदि आप अपाचे के प्रदर्शन के बारे में चिंतित हैं, तो विचार करने के लिए एक बात यह है कि यदि आपके पास बहुत सारे पुनर्लेख नियम हैं तो "छोड़ें" ध्वज का उपयोग करना है। यह नियमों पर मिलान छोड़ने का एक तरीका है। तो, मिलान पर जो भी ओवरहेड खर्च किया गया होगा बचाया जाता है।

हालांकि सावधान रहें, मैं एक परियोजना पर था जिसने "छोड़ें" ध्वज का बहुत उपयोग किया, और यह रखरखाव दर्दनाक बना दिया, क्योंकि यह उस क्रम पर निर्भर करता है जिसमें फाइल में चीजें लिखी जाती हैं।

+3

कुछ परिस्थितियों में [एल] ध्वज का उपयोग करना बेहतर हो सकता है (यह इंगित करता है कि * सभी * निम्नलिखित नियमों को छोड़कर निम्नलिखित नियमों को छोड़ दिया जाना चाहिए) नहीं? –

+0

और उपनिर्देशिका/नए स्थानीयकरण में .htaccess को रोकने के लिए "END" ध्वजांकित करें – 18C

7

रायन के ऊपर क्या कहता है उसे प्रतिबिंबित करने के लिए, .htaccess में नियम आपकी कॉन्फ़िगरेशन फ़ाइल में नियमों की तुलना में व्यस्त साइट पर आपके लोड समय को वास्तव में चोट पहुंचा सकते हैं। हमने शुरू में इस (~ 60 मिलियन पेज/महीने) की कोशिश की लेकिन हमारे सर्वर धूम्रपान शुरू होने तक बहुत लंबे समय तक नहीं टिके :)

आपकी कॉन्फ़िगरेशन में नियम रखने के लिए स्पष्ट नकारात्मकता है जब भी आप अपना संशोधित करते हैं तो आपको कॉन्फ़िगर को फिर से लोड करना होगा नियम।

अंतिम ध्वज ("एल") आपके नियमों को निष्पादित करने के लिए उपयोगी है, एक बार आपके अधिक बार-बार उपयोग किए जाने वाले नियम शीर्ष की ओर हैं और पहले मूल्यांकन किए जाते हैं। यदि आपके पास नियमों का एक लंबा सेट है, तो यह रखरखाव को अधिक कठिन बना सकता है - मैंने एक सुबह बहुत निराशाजनक घंटों बर्बाद कर दिए क्योंकि मैं नियमों की सूची में मध्य-मार्ग संपादित कर रहा था और एक शीर्ष पर था जो अधिक से अधिक फंस रहा था इरादा!

हमें प्रासंगिक मानक भी ढूंढने में कठिनाई हुई, और परीक्षणों के अपने आंतरिक सूट को पूरा करने में कामयाब रहा। एक बार जब हमारे नियमों को हल किया गया, ठीक से आदेश दिया गया और हमारे अपाचे conf में, हमें नकारात्मक प्रदर्शन प्रभाव नहीं मिला।