2017-01-14 6 views
15

मेरे पास एंजुलर यूनिवर्सल स्टार्टर किट का उपयोग करके मेरा वेब एप्लिकेशन लागू किया गया है। मैं प्री-रेंडर फ़ाइल को एस 3 बाल्टी में अपलोड करना चाहता हूं ताकि मेरा प्रारंभिक पृष्ठ तेजी से लोड हो जाए। लेकिन मुझे एस 3 में प्री-रेंडर फ़ाइल अपलोड करने और प्रारंभिक लोड पर उस फ़ाइल तक पहुंचने के बारे में उचित कॉन्फ़िगरेशन नहीं मिल सका?एस 3 पर प्री-रेंडर फ़ाइल अपलोड करने और हमारे वेबपृष्ठ के प्रारंभिक लोड पर पहुंच कैसे करें?

+0

मुझे यकीन नहीं है कि आपका मतलब पूर्व संकलित टेम्पलेट प्रतिपादन या HTML पृष्ठ प्रतिपादन है या नहीं, लेकिन मेरा मानना ​​है कि एंगुलरजेएस सिर्फ जावास्क्रिप्ट (क्लाइंट-साइड) फ्रेमवर्क है, जिसका अर्थ क्लाइंट पर कोड निष्पादन किया जा रहा है। ईसी 2 इंस्टेंस आपके पेज को प्रस्तुत नहीं करता है, ब्राउजर करता है। आप यहां "अमेज़ॅन एस 3 पर एक स्टेटिक वेबसाइट होस्टिंग" पर और अधिक पढ़ सकते हैं: http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html –

+0

या मेरा मतलब पूर्व संकलित टेम्पलेट था। मैंने वेबपैक्स का उपयोग किया है मेरी परियोजना को बंडल करने के लिए। तो अब मैं उलझन में हूं कि एस 3 में उस प्रीकंपिल्ड बंडल को अपलोड करने और प्रारंभिक लोड पर पहुंच कैसे अपलोड करें? मैंने कोणीय यूनिवर्सल स्टार्टर किट (सर्वर साइड प्रतिपादन) का उपयोग किया है, इसलिए सर्वर एक पृष्ठ उत्पन्न करता है जिसमें HTML प्रदान किया गया है और ब्राउज़र पर वापस आ जाता है। –

+0

@ शैलाजशाह क्या आप कृपया विस्तारित कर सकते हैं कि आपने अपने कोणीय ऐप को पूर्व-प्रस्तुत कैसे किया? [एसओ पर इसके बारे में पहले से ही सवाल है] (http://stackoverflow.com/questions/41803639/how-to-pre-render-pages-in-static-html-for-an-angular-app) बिना किसी जवाब के । आपकी मदद के लिए आपकी सराहना की जाती है! – Dmitry

उत्तर

5

एक प्रीरेंडर किए गए HTML का उपयोग करना एक स्थिर वेबसाइट अपलोड करने जैसा ही है। यह मानते हुए कि आपके पास क्लाइ स्थापित और कॉन्फ़िगर किया गया है (aws configure का उपयोग करके), आप फ़ाइल को एस 3 बाल्टी में अपलोड करने के लिए निर्देशिका पर निम्न आदेश चला सकते हैं।

यह केवल उन फ़ाइलों को अपलोड/अपडेट करेगा जो मौजूदा बाल्टी फ़ाइलों से बदल गए हैं।

aws s3 sync my_local_dir s3://my_s3_bucket_name 

साथ ही, आपको कैश सेट करना चाहते हैं तो आप निम्न विकल्प

aws s3 sync my_local_dir s3://my_s3_bucket_name --cache-control max-age=604800 
2

@Shailaja शाह .. इस उत्तर थोड़ी देर हो चुकी है जोड़ सकते हैं, मैं नहीं जानता कि कि क्या आप आपका जवाब अभी तक मिला है या नहीं। लेकिन मैं इसे एसओ उपयोगकर्ताओं की मदद करने के लिए वैसे भी जोड़ रहा हूं।

मुझे नहीं लगता कि एस 3 की तरह स्थिर फ़ाइल होस्टिंग के साथ कोणीय सार्वभौमिक कार्य कैसे होता है। कोणीय सार्वभौमिक को क्लाइंट बाउसर को सौंपने से पहले पेज को प्रीरेंडर करने के लिए सर्वर पक्ष जावास्क्रिप्ट इंजन (नोडजेज़) की आवश्यकता होती है; अमेज़ॅन एस 3 में कुछ स्थिर फाइलों की सेवा करने की तुलना में बस कोई क्षमता नहीं है। दूसरी तरफ, क्लाइंट साइड रेंडरिंग के साथ, एस 3 ठीक काम करेगा, क्योंकि यह केवल नौकरी है स्थिर फाइलों (index.html, app.js, app.css इत्यादि)

एक समान प्रश्न (यह https://github.com/angular/universal/issues/554

Btw, Angular Universal is part of the main ng project now

एक इनाम खुलने यहाँ, के रूप में मैं यह भी पता लगाने के लिए उत्सुक हूँ: qn एक और स्थिर फ़ाइल सर्वर nginx, एस 3 के बजाय) के बारे में है।

2

मैंने इसे अपने वर्तमान संगठन में लागू किया है। मेरे मामले में अंतर था कि हमारी सामग्री इन्वेंट्री के कारण गतिशील थी। इसलिए, हम केवल सभी क्रॉलरों को पूर्व-प्रस्तुत पृष्ठों को भेजते थे, न कि वास्तविक उपयोगकर्ताओं के लिए। ऐसा निम्न कारणों से किया गया था:

  1. नहीं वास्तविक सर्वर से क्रॉलर्स भेज वरना यह हमारे विश्लेषण को प्रभावित करेगा।
  2. क्रॉलर के लिए हमारे सर्वर को परेशान क्यों करें, केवल स्थिर डेटा की आवश्यकता है।
  3. सबसे महत्वपूर्ण रूप से अधिकांश इंजन कोणीय टैग प्रस्तुत नहीं कर सकते हैं .. मूल रूप से वे खोज परिणाम दिखाने से पहले पृष्ठ पर जावास्क्रिप्ट निष्पादित नहीं करते हैं। अगर हम ऐसा नहीं करते हैं; हमारी वेबसाइट के लिए खोज परिणाम भयानक लगेंगे।

हमने यह कैसे किया: हमारे nginx पर; हमने नियम कॉन्फ़िगर किया है यदि उपयोगकर्ता-एजेंट किसी प्री-रेंडर सर्वर (एक स्वतंत्र सर्वर) में https://github.com/prerender/prerender स्थापित होने वाले खोज इंजन स्थानांतरण अनुरोध में से कोई है।

सबसे पहले इस पूर्व-प्रस्तुत सर्वर s3HtmlCache प्लगइन पर कॉन्फ़िगर किया गया था .. यह प्लगइन सबसे पहले जांचता है कि पृष्ठ S3 में उपलब्ध है या नहीं; यदि नहीं, तो यह रन-टाइम पर पृष्ठ बनाता है -> s3 में सहेजता है -> क्लाइंट को भेजता है।

तो, अपनी समस्या का समाधान करने के लिए: अपने nginx में; बस पूर्व-प्रस्तुत सर्वर के लिए सभी अनुरोधों को स्थानांतरित करें।

अगर आपको किसी भी समस्या का सामना करना पड़ता है तो मुझे बताएं। मैंने इसे लागू किया है और मुझे पता है कि यह निश्चित रूप से काम करेगा। शुभकामनाएं।

संबंधित मुद्दे