2008-09-11 11 views
5

पर प्रीकंपिलेशन और स्टार्टअप समय मैं एएसपी.Net 2.0 में एक (अपेक्षाकृत छोटी) वेबसाइट विकसित कर रहा हूं। मैं एक्जिक्यूटिव वितरित करने से पहले अपने प्रोजेक्ट पर कुछ आसान ट्विकिंग करने के लिए एनएएनटी का भी उपयोग कर रहा हूं। अपनी वर्तमान स्थिति में, वेबसाइट "precompiled" हैएएसपी.Net

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

का उपयोग कर रहा देखा है कि के बाद आईआईएस पूल (एक निष्क्रिय शट डाउन या एक पुनरावृत्ति के बाद) को पुन: प्रारंभ किया जाता है, आवेदन करने के लिए लेता है ऑनलाइन वापस आने से 20 सेकंड पहले (और एप्लिकेशन_स्टार्ट पहुंच गया है)।

मेरे पास एक ही समस्या नहीं है जब मैं सीधे विजुअल स्टूडियो (इसे शुरू करने में 2 सेकंड लगते हैं) में डिबगिंग कर रहा हूं, इसलिए मुझे आश्चर्य है कि aspnet_compiler वास्तव में इतना अच्छा विचार है या नहीं।

मुझे एमएसडीएन पर ज्यादा जानकारी नहीं मिली। आप अपनी वेबसाइटों को उत्पादन के लिए कैसे संकलित करते हैं?

उत्तर

4

सुनिश्चित करें कि:

  1. आप एक वेब अनुप्रयोग परियोजना का उपयोग कर रहे बल्कि एक वेब साइट परियोजना की तुलना में, इस
  2. के पीछे अपने कोड के लिए एक precompiled बाइनरी में परिणाम होगा आप में डिबग कोड पीढ़ी बंद कर दिया है web.config फ़ाइल - मुझे लगता है कि अगर यह करने के लिए जब आप इस्तेमाल किया aspnet_compiler कोड

आप उन की कोशिश की है, तो आप शायद अपने विधानसभा इस प्रकार JIT समय की बचत से अधिक NGEN चलाने की कोशिश कर सकता है कंपाइल किया जा सकता है अलग है?

1

सुनिश्चित करें कि यह web.config <compilation debug=false> में सेट है। मेरे मामले में, मेरे पास बैच फ़ाइल भी है जो उपयोगकर्ताओं को देने से पहले सभी मुख्य पृष्ठों के लिए अनुरोध प्राप्त करें (पेज लोडिंग सिमुलेशन)।

0

@Simon:

  • परियोजना एक वेब अनुप्रयोग है। वेबसाइटें तब स्टार्टअप के लिए धीमी होती हैं (मुझे नहीं पता था कि अलग-अलग कोड संगठन के बगल में कोई घटना थी)?
  • मैंने चेक किया, और जब मैं web.config को aspnet_compiler के नाम से संपादित करता हूं, तो मैं डीबग मान को स्पर्श नहीं करता हूं (हालांकि, अगर मैं web.config को स्पर्श नहीं करता हूं तो मैं स्टार्टअप के लिए वेबसाइट तेज़ नहीं हूं, बस सुनिश्चित करें कि अपनी वेबसाइट से updatable के रूप में संकलित किया गया है, तो बनाने के लिए)

(और मैं निश्चित रूप से NGEN पर एक नज़र है, मुझे लगता है कि उपकरण के बारे में पता नहीं था।)

+0

मुझे लगता है कि वेब अनुप्रयोगों बनाम साइटों बात वास्तव में updatable बिट के साथ क्या करना हो सकता है विल उल्लेख के रूप में - मेरी क्षुधा updatable चिह्नित नहीं कर रहे हैं। मुझे लगता है कि आप शायद संगठन की बात के बारे में सही हैं, मुझे पुष्टि करने के लिए एक और अधिक खेलना होगा। –

2

, आप का एक समूह दिखाई देगा आपकी वर्चुअल निर्देशिका में एएसपीएक्स फाइलें। इन्हें स्टार्टअप पर संकलित किया जाना चाहिए। ऐसा इसलिए है कि आप वेब यूआई में आ सकते हैं और बदल सकते हैं। यह दोनों वेबसाइटों और वेब अनुप्रयोगों के लिए डिफ़ॉल्ट है।

4

परम प्रतिकृति के लिए, अपने ऐप को बंद करने की अनुमति न दें।

पहला तरीका यह सुनिश्चित करना है कि यह अविश्वसनीय रूप से लोकप्रिय है ताकि हमेशा इसका उपयोग करने वाला कोई व्यक्ति हो।

वैकल्पिक रूप से, निर्धारित साइट के रूप में कहीं और से एक छोटा सा जीवित पृष्ठ लाने से आपकी साइट 'गर्म' रखने के लिए उपयोग किया जा सकता है।

+0

मुझे यह दिलचस्प लगता है कि दो लोगों ने बिना किसी टिप्पणी के मेरा जवाब दिया है, इस तथ्य के बावजूद कि यह कुछ बहुत बड़ी प्रणालियों द्वारा उपयोग किया जाने वाला यथार्थवादी दृष्टिकोण है। ध्यान दें कि इस उद्देश्य के लिए DotNetNuke में keepalive.aspx शामिल है। –

+0

मुझे नहीं, लेकिन मुझे लगता है कि डाउनवॉट्स हैं क्योंकि यह स्टार्टअप समय को कम नहीं करता है। इसके अलावा, यह आईआईएस 7.5/नेट 4 पर अनावश्यक है, एएसपी .NET 4.0 जहाजों के साथ ऑटो-स्टार्ट फीचर जो एक ही चीज़ को पूरा करता है। – Brian

1

कुंजी यह सुनिश्चित करना है कि आईआईएस एप्लिकेशन पूल कभी बंद नहीं हो जाता है। यह वह जगह है जहां कोड वास्तव में होस्ट किया जाता है।1440 मिनट (24 घंटे) की तरह यह सुनिश्चित करने के लिए "निष्क्रिय टाइमआउट" (उन्नत सेटिंग्स के तहत) को वास्तव में उच्च पर सेट करें, यह सुनिश्चित करने के लिए कि जब तक कोई दिन में आपकी साइट को हिट करता है तब तक यह बंद नहीं होता है।

जब भी आप नया कोड तैनात करते हैं, या यदि यह निष्क्रिय टाइमआउट अवधि किसी भी यातायात को दूर कर देती है तो आप अभी भी जेआईटी समय प्राप्त करने जा रहे हैं।

Configuring IIS 7.x Idle Timeout