ड्रुपल बूटस्ट्रैप कैशिंग


10

मुझे उत्सुकता है अगर किसी ने ड्रुपल में बूटस्ट्रैप प्रक्रिया को "कैश" करने का प्रयास किया है।

आमतौर पर, ड्रुपल प्रत्येक अनुरोध पर 7 बूटस्ट्रैप चरण चलाएगा, लेकिन शायद एक तैनात उत्पादन प्रणाली पर, इनमें से कुछ या सभी के साथ "दूर" कर सकता है?

संभव सुझाव जो मेरे मन में हैं वे हो सकते हैं

  1. बूटस्ट्रैप किए गए राज्य को सीरियल करना और उसे मेमेचे में चिपका देना
  2. एक स्क्रिप्ट bootstrap.inc के लिए एक पैच उत्पन्न कर सकती है जो फ़ाइल में कुछ जानकारी को हार्डकोड करेगी।
  3. मेरा मानना ​​है कि डेविड स्ट्रॉस ने एक बूटस्ट्रैप्ड ड्रुपल को परिवाद पर चलाने की कोशिश की है।
  4. अन्य पागलपन?

क्या प्रयास हैं, और जो (कुछ) विश्वसनीय होने के लिए जाने जाते हैं?


यह किसी तरह ड्रुपल को संकलित करने के बारे में मेरे सवाल से संबंधित है: drupal.stackexchange.com/q/11738/2916
रिफाइनो

जवाबों:


12

PHP एक साझा कुछ नहीं वास्तुकला है। इसके फायदे और नुकसान हैं।

एक नुकसान यह है कि ऐसा कुछ करना आसान नहीं है। ऐसा कोई राज्य नहीं है जिसे कहीं संग्रहीत किया जा सके।

मैंने कुछ त्वरित परीक्षण किए और जब लॉग इन किया, तो यह बूस्टप्रॉप कुल समय का ~ 17% लगता है और 50% से अधिक वास्तव में सभी .module और .inc फ़ाइलों को लोड कर रहा है। यह कुछ ऐसा नहीं है जिसे आप मेमेचे में स्टोर कर सकते हैं। इसके अलावा, अगर मैं मेमेचे या डेटाबेस कैश का उपयोग करता हूं, तो यह ज्यादा मायने नहीं रखता है।

पेज कैश सक्षम होने पर मैंने कुछ परिणाम प्राप्त करने की कोशिश की, लेकिन Xhprof को तब विश्वसनीय परिणाम वापस नहीं आते हैं; पूरी बात बस बहुत तेज़ लगती है। लेकिन फिर भी, सबसे बड़े हिस्से में इनिट / एग्जिट हुक निष्पादित करना और इसे लोड करने वाली फ़ाइलों को शामिल करना शामिल है। मुझे वहां एक दिलचस्प मुद्दा मिला: ऐसा लगता है कि उपयोगकर्ता मॉड्यूल गंभीरता से कैश्ड पृष्ठ प्रतिक्रिया को धीमा कर रहा है क्योंकि यह .module फ़ाइल में इकाई नियंत्रक के कारण रजिस्ट्री को ट्रिगर करता है।

उस ने कहा, डेविड स्ट्रॉस ने कोपेनहेगन में कुछ प्रायोगिक काम दिखाया, जहां उन्होंने बूटस्ट्रैपिंग के बाद एक मेमोरी स्नैपशॉट बनाया और फिर पृष्ठ की सेवा के बाद वापस आ गया। उन्होंने उसके लिए ड्रुपल 6 का इस्तेमाल किया। उपरोक्त संख्याओं को देखने के बाद, मुझे लगता है कि ड्रुपल 7 में ऐसा करने का प्रदर्शन लाभ काफी छोटा होगा। इसका एक कारण यह है कि डेटाबेस कनेक्शन आलसी लोडेड है (और पहले क्वेरी को निष्पादित करने की आवश्यकता होने से पहले आप उदाहरण के लिए मेकचे का उपयोग करते समय बूटस्ट्रैप में काफी दूर निकल सकते हैं) और बहुत कुछ है जो कैश्ड है।

Drupal 7 में वास्तव में क्या बुरा है, इन विशाल सरणियों और अंतहीन रिकर्स और छोरों के साथ रेंडर परत है। यह एक बहुत ड्रुपाल 7 में चला गया है कि सभी प्रदर्शन कार्य को पूर्ववत करता है। आइए देखें कि ड्रुपल 8 में यह कैसा दिखता है, अगर ट्विग इसे कोर में बनाता है।

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


4
मैं तो ); साइट @Berdir आपके हमारे साथ होने से प्यार है
Letharion

एलेक्स ब्रोंस्टीन ने स्प्रिंट के दौरान इसका उल्लेख किया कि एपीसी के साथ भी tpl.php फ़ाइलों को शामिल करना कुछ धीमा है, इसके लिए एक स्टेटमेंट की आवश्यकता होती है - लेकिन ट्विग कक्षाओं के लिए संकलित करता है ताकि नोड जैसे पेजों पर एक जीत हो जाए। हम देख लेंगे।

मुझे लगता है कि आप एक प्रणाली बना सकते हैं, जहाँ कैश्ड पृष्ठों के लिए, आप फिर से लिखने के नियमों का एक समूह तैयार करते हैं और पीएचपी को पूरी तरह से PHP को बायपास करने के लिए html पेजों के साथ, उन्हें इनहैट्स में डालते हैं। हालांकि परेशानी के लायक नहीं हो सकता है: IIS, nginx, लॉग-इन उपयोगकर्ता, ...
Bart

1
@ बर्ट: आपने अभी-अभी बूस्ट का आविष्कार किया: drupal.org/project/boost :)
बर्दिर

5

नहीं, यह डेविड स्ट्रॉस था जो https://code.launchpad.net/~fourkitchens/pressflow/6-evented पर कराओ-इवेंट (जिसे अब केल्नर कहा जाता है) के साथ प्रयोग कर रहा था, लेकिन मुझे संदेह है कि इसमें से कुछ भी गंभीर निकला।

Drupal 7 करता बूटस्ट्रैप का एक बहुत पहले से ही कैश है, वहाँ एक है cache_bootstrapकि के लिए बिन। आप इसे मेमकेड में चिपका सकते हैं।

आप ओवरबोर्ड पर जा सकते हैं और कोड लोडिंग को ड्रापल कोड के कुछ / बहुत सी में ले जाने के साथ कम कर सकते हैं। डेमियन और dhthwy ने http://drupal.org/project/drupal_php_ext पर PHP एक्सटेंशन बनाया है, इसके साथ बहुत कुछ नहीं किया गया है। या हिपहॉप करते हैं। मुझे हिपहॉप और ड्रुपल 7 की वर्तमान स्थिति नहीं पता है।

दिन के अंत में, हालांकि, आपको ड्रूपल 7 (और सभी कॉन्ट्रिब!) के साथ हिपहॉप काम पाने और कहने के लिए कुछ और सर्वर किराए पर लेने के साथ, इंजीनियरिंग लागत पर एक अच्छी कड़ी नज़र रखने की ज़रूरत है। यदि आप अपने सर्वर का 5% बचा सकते हैं, और आपके पास 100 000 सर्वर हैं, तो इसके लिए जाएं, लेकिन क्या आप फेसबुक हैं? अनुकूलन के साथ सावधान और किफायती रहें।


धन्यवाद, मैंने सवाल अपडेट किया है और उसमें से आपका नाम हटा दिया है। :) मुझे एहसास है कि कई मामलों के लिए, प्रदर्शन से निपटने के लिए कहीं अधिक कुशल तरीके हैं, मैं ज्यादातर उत्सुक था।
प्रात:

1

उच्च प्रदर्शन Drupal meetup में doh (डायनामिक ऑब्जेक्ट हैंडलर) के बारे में एक दिलचस्प प्रस्तुति देखी । संक्षेप में वह इसका उपयोग करके तेजी से बूटस्ट्रैपिंग के बारे में बात करता है। 15:30 के आसपास दिलचस्प हो जाता है। Autoload साथ संक्षेप में स्टेरॉयड पर runkit कार्यात्मक रूप में अच्छी तरह। 33:00 निशान पर क्यूए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.