2012-03-18 21 views
18

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

उत्तर

25

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

समाधान जो हमारे लिए सबसे अच्छा काम करता है, विकास वातावरण में रहते हुए फ्लाई पर कम सर्वर-साइड संकलित करने के लिए node.js को चलाने के लिए था, फिर साइट को उत्पादन में तैनात करते समय इसे एक एकल gzipped css फ़ाइल में पूर्व-संकलित करें।

प्री-कंपाइलिंग क्लाइंट द्वारा हमारे मामले में दर्जन प्रति पृष्ठ (प्रत्येक कम फ़ाइल प्रति एक) से अलग-अलग फ़ाइल अनुरोधों की संख्या को भी कम करता है, केवल एक सीएसएस फ़ाइल में, और संकलन चरण से बचकर त्वरित लोडिंग करता है (पेज क्लाइंट प्रतिपादन शुरू करने से पहले प्रत्येक क्लाइंट-साइड less.js को हर बार एक नया पेज नेविगेट करना पड़ता है।)

मैं लाइव उत्पादन वातावरण में फ्लाई पर सर्वर-साइड को संकलित करने की अनुशंसा नहीं करता, क्योंकि इससे बहुत सारे अनावश्यक प्रोसेसर लोड जोड़े जाएंगे। यदि आप इसे पहले से संकलित करते हैं तो यह एक सामान्य सीएसएस फ़ाइल की तुलना में अधिक सर्वर संसाधनों का उपभोग नहीं करेगा।

+0

धन्यवाद, बस पुष्टि करने के लिए कि मैं समझ गया हूं ... क्या इसका मतलब क्लाइंट पक्ष पर है, हर बार एक पेज लोड होने पर कम संसाधित होता है। सर्वर की ओर, कम लोड किए गए पहले पृष्ठ के लिए केवल संसाधित किया जाता है और फिर कैश किया जाता है और फिर संसाधित नहीं किया जाता है? –

+0

हां, ग्राहक पक्ष पर इसे हर बार एक पृष्ठ देखा जाने पर संकलित किया जाना चाहिए। यदि आपके पास एक अच्छा सर्वर-साइड कार्यान्वयन है तो यह संकलित सीएसएस को कैश करेगा और आपकी कम स्रोत फ़ाइलों को तब तक पूरा करेगा जब तक कि आपकी कम स्रोत फ़ाइलें परिवर्तित न हों। लेकिन जब तक आप फ्लाई पर स्टाइलशीट को बदलने की योजना नहीं बनाते हैं, तो आप इसे पहले से ही कम से कम संकलित कर सकते हैं जब आप इसे पहले उत्पादन में तैनात करते हैं, इसे सीधे अपने HTML से संदर्भित एक फ्लैट सीएसएस फ़ाइल के रूप में सहेजते हैं। इससे नोड.जेएस को भी चलाने से रोक दिया जाएगा और कम से कम सेवा करने का सबसे प्रभावी तरीका है। –

+1

इसके अलावा: सर्वर द्वारा स्वचालित रूप से काम कर रहे संकलन पर गिनने के बजाय एक तैनाती स्क्रिप्ट के हिस्से के रूप में सीएसएस को संकलित करने के लिए बेहतर है। – mlissner

3

ब्राउज़र केवल सर्वर से प्राप्त डेटा को कैश कर सकता है। यह में ब्राउज़र में संकलित सीएसएस शामिल है (एचटीएमएल 5 स्थानीय स्टोरेज तंत्र अलग)। इसका अर्थ यह है कि ब्राउज़र को लोड होने पर प्रत्येक बार सीएसएस में कम फ़ाइलों को संकलित करना होगा - भले ही सर्वर से बजाए ब्राउज़र कैश से कम फ़ाइल लोड हो।

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