Magento कैश अलग नहीं है। मूल के साथ शुरू, कैश विकल्प नेविगेट करके देखा जा सकता है
सिस्टम-> कैश मैनेजमेंट
बैकेंड में। आप कैशिंग के विभिन्न क्षेत्रों को देख सकते हैं जिन्हें सक्षम / अक्षम किया जा सकता है, जैसे कि कोई भी कॉन्फ़िगरेशन, लेआउट। xml, ब्लॉक, पूर्ण पृष्ठ और एपी फ़ाइलें। जाहिर है कि आदर्श को लाइव होने के बाद इन सभी को सक्षम होना चाहिए।
कैश को यहां से भी साफ़ या फ्लश किया जा सकता है। लेबल किए गए बटन को दबाने से “Flush Magento Cache”
किसी भी कैश फ़ाइलों को फ्लश किया जाएगा जो कि मैगेंटो द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट टैग में निर्मित एक निश्चित सेट से मेल खाते हैं। कैश को खाली करने का यह "सुरक्षित" तरीका है, क्योंकि यह बिल्कुल सब कुछ स्पष्ट नहीं करता है। यदि आप किसी भी द्वितीयक कैश प्रकार का उपयोग कर रहे हैं, तो क्लिक करने “Flush Cache Storage”
से यह सुनिश्चित हो जाएगा कि आपने कैश को साफ़ कर दिया है, क्योंकि यह सभी को साफ़ करता है। व्यवस्थापक पृष्ठ पर आपके द्वारा देखे गए अन्य दो बटन जावास्क्रिप्ट और सीएसएस और कैटलॉग छवियों को साफ कर देंगे।
कैश को नेविगेट करने के लिए वैकल्पिक और थोड़ा कम सुरक्षित तरीका है
websiteroot / var / कैश
और मैन्युअल रूप से सभी फ़ाइलों को हटाना। उसी के लिए जाता है
websiteroot / var / full_page__cache
यदि आपके पास पूर्ण पृष्ठ कैश सक्षम है।
एंटरप्राइज एडिशन पर उपलब्ध फुल पेज कैश, आपकी साइट को 10 गुना तक बढ़ा देता है, लेकिन इसके बारे में थोड़ा जानना महत्वपूर्ण है, बस अगर आप किसी गतिशील सामग्री को कैश्ड होने की सूचना देते हैं। देखने के लिए एक दिलचस्प फ़ाइल है
websiteroot / ऐप्स / कोड / कोर / उद्यम / पेजकैश / etc / cache.xml
यहां आप देख सकते हैं कि एफपीसी, ब्लॉक नाम, कंटेनर नाम और सत्र जीवनकाल में क्या कैश किया जा रहा है। यदि आपको कैश से इनमें से किसी भी ब्लॉक को संपादित करने या निकालने के लिए पूरी तरह से आवश्यक है, तो आप ऐसा कर सकते हैं कि पेजकेक मॉड्यूल पर निर्भर मॉड्यूल बनाकर, और वहां किसी भी संशोधन को रखकर।
प्लेसहोल्डर टैग एफपीसी को बताता है कि उस ब्लॉक को गतिशील माना जाता है। जब कोई पृष्ठ लोड किया जाता है, यदि ब्लॉक अभी तक कैश में नहीं है, तो प्लेसहोल्डर टैग में इस आईडी मान को कैश में खोजा जाता है, और यदि यह मौजूद नहीं है, तो उस ब्लॉक को कॉल और उत्पन्न किया जाता है, और आईडी को जोड़ा जाता है। कैश।
Magento के संकलन सुविधा के तहत पाया जा सकता है
प्रणाली> उपकरण> संकलन
यदि आप एक ताजा स्थापित कर रहे हैं, तो आपको संभवतः एक सिस्टम संदेश मिलता है कि दोनों includes and includes/src/
निर्देशिकाओं को योग्य बनाया जाना चाहिए। जब यह किया जाता है, तो हम 'रन संकलन प्रक्रिया' बटन को हिट कर सकते हैं और आप मूल रूप से कर रहे हैं, Magento कोर संकलन का उपयोग कर रहा है।
जब Magento यह स्रोत कोड संकलित करता है, तो फ्रेमवर्क कुछ चीजें करता है। या तो व्यवस्थापक के माध्यम से ट्रिगर किया जा रहा है या shell, see shell/compiler.php
, सभी संकलन एक ही वर्ग द्वारा किया जाता है Mage_Compiler_Model_Process
:। इस कक्षा के भीतर आपको निम्नलिखित स्निपेट मिलेंगे जो वास्तव में पूरी प्रक्रिया का एक पक्षी-दृश्य है।
/**
* Run compilation process
*
* @return Mage_Compiler_Model_Process
*/
public function run()
{
$this->_collectFiles();
$this->_compileFiles();
$this->registerIncludePath();
return $this;
}
$this->_collectFiles();
कॉल से दूर , Magento दोनों से सभी PHP फ़ाइलों की प्रतिलिपि बनाता है
एप्लिकेशन / कोड
और करने के लिए कामगार निर्देशिका
/ / Src शामिल
निर्देशिका। जैसा कि आप नीचे स्निपेट में देख सकते हैं: इस प्रक्रिया के दौरान मैगेंटो सभी फ़ाइलों और निर्देशिकाओं के माध्यम से पुनरावृत्ति करता है। इन रास्तों को अंततः फ़ाइलनाम के रूप में उपयोग किया जाता है। जब पुनरावर्ती प्रक्रिया एक फ़ाइल को हिट करती है तो यह PHP एक्सटेंशन के लिए जांच करेगी और जब पाया जाता है, तो फ़ाइल को कंपाइल डायरेक्टरी में कॉपी किया जाता है। अन्य फ़ाइल प्रकारों को अछूता रखा गया है।
एक उदाहरण के रूप में: वर्ग Mage_Catalog_Model_Category के लिए पथ था
एप्लिकेशन / कोड / कोर / दाना / सूची / मॉडल / category.php
लेकिन, संकलन सक्षम होने के साथ, अब बन गया है
/ Src / Mage_Catalog_Model_Category.php शामिल
/**
* Copy files from all include directories to one.
* Lib files and controllers files will be copied as is
*
* @return Mage_Compiler_Model_Process
*/
protected function _collectFiles()
{
$paths = $this->_getIncludePaths();
$paths = array_reverse($paths);
$destDir= $this->_includeDir;
$libDir = Mage::getBaseDir('lib');
$this->_mkdir($destDir);
foreach ($paths as $path) {
$this->_controllerFolders = array();
$this->_copy($path, $destDir); // this one will run recursively through all directories
$this->_copyControllers($path);
if ($path == $libDir) {
$this->_copyAll($libDir, $destDir);
}
}
$destDir.= DS.'Data';
$this->_mkdir($destDir);
$this->_copyZendLocaleData($destDir);
return $this;
}
नियंत्रकों को एक अन्य उपचार मिल रहा है। सभी नियंत्रक निर्देशिकाओं की नकल की जाती है
शामिल / src /
लेकिन एक निर्देशिका के भीतर संग्रहीत किया जाता है जिसका नाम संबंधित नामस्थान है, सोचें: दाना, उद्यम या आपके स्वयं के दिए गए नाम स्थान।
इन नामस्थान निर्देशिकाओं के भीतर नियंत्रक प्रति मॉड्यूल संग्रहीत किए जाते हैं और नियंत्रक निर्देशिका संरचना को अछूता रखा जाता है। वही फ़ाइल नाम के लिए जाता है, यह केवल एक सटीक प्रतिलिपि है। यह सभी तर्क निम्न विधि में पाए जा सकते हैं$this->_copyControllers($path);
संकलन का यह दूसरा स्तर व्यवस्थापक से सभी स्कोप और उनके संबंधित वर्ग सूची एकत्र करता है। इन सभी स्कोपों को संबंधित वर्ग फ़ाइलों की सामग्री को प्राप्त करके संसाधित किया जा रहा है और उन्हें दिए गए दायरे के नाम पर एक एकल फ़ाइल में लिखा गया है।
/**
* Compile classes code to files
*
* @return Mage_Compiler_Model_Process
*/
protected function _compileFiles()
{
$classesInfo = $this->getCompileClassList();
foreach ($classesInfo as $code => $classes) {
$classesSorce = $this->_getClassesSourceCode($classes, $code);
file_put_contents($this->_includeDir.DS.Varien_Autoload::SCOPE_FILE_PREFIX.$code.'.php', $classesSorce);
}
return $this;
}
डिफ़ॉल्ट रूप से Magento चार अलग-अलग स्कोप फ़ाइलें बनाता है:
__default.php, __catalog.php, __checkout.php और __checkout.pp
इन स्कोप फ़ाइलों के निर्माण की प्रक्रिया के दौरान, Magento स्वचालित रूप से सभी क्लास फैली हुई है और इंटरफेस है कि गुंजाइश सूची में प्रदान की कक्षाओं द्वारा इस्तेमाल किया जा रहा है।
जगह और संकलित सभी फाइलों के साथ, Magento उपयोग के लिए संकलन सुविधा को सक्षम करने के लिए तैयार है।
पिछले नहीं बल्कि कम से कम संकलन से संबंधित विन्यास को समायोजित किया गया है। इस फ़ाइल includes/config.php
को निम्न दो स्थिरांक पर पाया जा सकता है । संकलन को सक्षम करने पर COMPILER_INCLUDE_PATH के बारे में लाइन अनियंत्रित है और इस तरह कार्रवाई के लिए तैयार है।
> #define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src');
> #define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');
कॉन्फ़िगरेशन फ़ाइल को समायोजित करने के लिए ज़िम्मेदार कोड रजिस्टर में पाया जा सकता है Mage_Compiler_Model_Process class
।
बूटस्ट्रैप के दौरान संकलन विन्यास फाइल भीतर शामिल है index.php file (around line 44)
। यह संपूर्ण ढांचे में शामिल_पाठ स्थिरांक उपलब्ध कराता है। संग्रह_पथ वह चीज़ है जिसे आप केवल अपने संकलित फ़ाइलों के उपयोग के बारे में अधिक सांख्यिकीय जानकारी प्राप्त करने के लिए मैन्युअल रूप से सक्षम कर सकते हैं। इसे लाइव पर सक्षम नहीं किया जाना चाहिए।
/**
* Compilation includes configuration file
*/
$compilerConfig = 'includes/config.php';
if (file_exists($compilerConfig)) {
include $compilerConfig;
}
इस बिंदु पर Magento जाँच करेगा कि संकलन मोड निम्नलिखित कथन के साथ सक्षम है या नहीं। कोडबेस (g grep ’का उपयोग करके) के माध्यम से जाने पर आप देखेंगे कि इस तर्क को lib/Varien/Autoload.php
फ़ाइल में पाया जा सकता है ।
if (defined('COMPILER_COLLECT_PATH')) {
// do stuff
}
देखने के लिए दूसरी जगह है Mage_Core_Controller_Varien_Action
। इस वर्ग में आपको वह preDispatch()
विधि मिलेगी , जो वास्तव में प्रेषण से पहले प्रत्येक नियंत्रक क्रिया विधि के लिए ट्रिगर होती है। स्रोत के इस हिस्से में Magento के ऑटोलैडर क्लास Varien_Autoload को एक विशिष्ट संकलन गुंजाइश फ़ाइल को लोड करने के लिए कहा जा रहा है।
Mage::dispatchEvent('controller_action_predispatch', array('controller_action'=>$this));
Mage::dispatchEvent(
'controller_action_predispatch_'.$this->getRequest()->getRouteName(),
array('controller_action'=>$this)
);
Varien_Autoload::registerScope($this->getRequest()->getRouteName()); // right here
Mage::dispatchEvent(
'controller_action_predispatch_'.$this->getFullActionName(),
array('controller_action'=>$this)
);
जब संकलन मोड में चल रहे Magento में केवल एक ही शामिल पथ होता है, includes/src/
निर्देशिका, इसलिए प्रत्येक फ़ाइल पहली कोशिश में सीधे मिलती है। मैगेंटो के पास पर्याप्त मात्रा में फाइलें होने के कारण, यह काफी समय बचाता है। नीचे का स्निपेट से लिया गया है
एप्लिकेशन / Mage.php
if (defined('COMPILER_INCLUDE_PATH')) {
$appPath = COMPILER_INCLUDE_PATH;
set_include_path($appPath . PS . Mage::registry('original_include_path'));
include_once "Mage_Core_functions.php";
include_once "Varien_Autoload.php";
} else {
/**
* Set include path
*/
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';
$appPath = implode(PS, $paths);
set_include_path($appPath . PS . Mage::registry('original_include_path'));
include_once "Mage/Core/functions.php";
include_once "Varien/Autoload.php";
}
जब PHP में एक फ़ाइल शामिल होती है, तो सामग्री को opcode करने के लिए संकलित किया जाता है। यह एक ऐसी प्रक्रिया है जिसमें हर बार एक फ़ाइल शामिल करने की आवश्यकता होती है। अपनी दुकान के प्रदर्शन को बेहतर बनाने के लिए और भी आगे आप अपने सर्वर पर एपीसी स्थापित कर सकते हैं। एपीसी फाइलों के ऑपकोडेड संस्करणों को कैश करता है, जो उन्हें बाद के अनुरोधों के लिए उपलब्ध कराता है। तो अगले अनुरोध पर: फ़ाइल एपीसी कैश से पढ़ी जाएगी, इसके बजाय फिर से उसी प्रक्रिया से गुजरने और अपने प्रदर्शन को खत्म करने के लिए।