마 젠토 캐시도 다르지 않습니다. 기본 사항부터 시작하여 캐시 옵션을 탐색하여 캐시 옵션을 볼 수 있습니다.
시스템-> 캐시 관리
백엔드에서. 구성, layout.xml, 블록, 전체 페이지 및 API 파일과 같이 활성화 / 비활성화 할 수있는 다양한 캐싱 영역을 볼 수 있습니다. 사이트가 활성화되면 이러한 기능을 모두 활성화하는 것이 이상적입니다.
여기에서 캐시를 지우거나 플러시 할 수도 있습니다. 라벨 “Flush Magento Cache”
이 지정된 버튼을 누르면 Magento가 사용하는 특정 기본 제공 기본 태그 세트와 일치하는 캐시 파일이 플러시됩니다. 이것은 캐시를 지우는“안전한”방법입니다. 모든 것을 완전히 지우지는 않습니다. 보조 캐시 유형을 사용하는 경우을 클릭 “Flush Cache Storage”
하면 모든 항목이 지워 지므로 캐시가 지워집니다. 관리자 페이지에 표시되는 다른 두 버튼은 자바 스크립트와 CSS, 카탈로그 이미지를 지 웁니다.
캐시를 지우는 대체적이고 약간 덜 안전한 방법은
websiteroot / var / cache
모든 파일을 수동으로 삭제합니다. 동일
websiteroot / var / full_page__cache
전체 페이지 캐시를 사용하도록 설정 한 경우
Enterprise Edition에서 사용할 수있는 전체 페이지 캐시는 사이트를 10 배 빠르게 처리하지만 동적 콘텐츠가 캐시되는 경우를 대비하여 사이트에 대해 조금 아는 것이 중요합니다. 살펴볼 흥미로운 파일은
websiteroot / app / code / core / Enterprise / PageCache / etc / cache.xml
여기서 FPC에 의해 캐시되는 내용, 블록 이름, 컨테이너 이름 및 세션 수명을 확인할 수 있습니다. 캐시에서 이러한 블록을 편집하거나 제거해야하는 경우, PageCache 모듈에 종속 된 모듈을 작성하고 수정하십시오.
자리 표시 자 태그는 해당 블록이 동적으로 간주된다고 FPC에 알려줍니다. 페이지가로드 될 때 블록이 아직 캐시에 없으면 자리 표시 자 태그의이 ID 값이 캐시에서 검색되고 존재하지 않는 경우 해당 블록이 호출되고 생성 된 것보다 ID가 추가됩니다. 캐시.
마젠 토의 컴파일 기능은 아래에 있습니다.
시스템> 도구> 컴파일
새로 설치하는 경우 두 includes and includes/src/
디렉토리 모두 쓰기 가능해야 한다는 시스템 메시지가 표시 될 수 있습니다. 이 작업이 끝나면 'Run Compilation process'버튼을 누르면 기본적으로 완료됩니다. 마 젠토 코어는 컴파일을 사용합니다.
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 파일을 복사합니다.
앱 / 코드
그리고 lib 디렉토리는
/ includes / src
예배 규칙서. 아래 스 니펫에서 볼 수 있듯이이 프로세스 동안 Magento는 모든 파일과 디렉토리를 반복적으로 반복합니다. 이 경로는 결국 파일 이름으로 사용됩니다. 재귀 프로세스가 파일에 도달하면 PHP 확장자를 확인하고 발견되면 파일이 컴파일러 디렉토리에 복사됩니다. 다른 파일 형식은 그대로 유지됩니다.
예를 들어 Mage_Catalog_Model_Category 클래스의 경로는 다음과 같습니다.
앱 / 코드 / 코어 / 마법사 / 카탈로그 / 모델 /Category.php
그러나 컴파일이 활성화되면 이제
includes / 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 /
그러나 관련 네임 스페이스의 이름을 가진 디렉토리에 저장됩니다. Mage, Enterprise 또는 고유 한 네임 스페이스를 생각하십시오.
이러한 네임 스페이스 디렉토리 내에 컨트롤러는 모듈 당 저장되며 컨트롤러 디렉토리 구조는 그대로 유지됩니다. 파일 이름도 마찬가지입니다. 정확한 사본 일뿐입니다. 이 모든 논리는 다음 방법에서 찾을 수 있습니다$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 및 __cms.php
이러한 범위 파일을 작성하는 과정에서 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');
구성 파일 조정을 담당하는 코드는의 registerIncludePath 메소드에서 찾을 수 있습니다 Mage_Compiler_Model_Process class
.
부트 스트랩 동안 컴파일 구성 파일은에 포함됩니다 index.php file (around line 44)
. 이를 통해 전체 프레임 워크에서 include_path 상수를 사용할 수 있습니다. collect_path는 컴파일 된 파일 사용에 대한 통계 정보를 얻기 위해 수동으로 만 활성화 할 수있는 것입니다. 실시간으로 활성화해서는 안됩니다.
/**
* Compilation includes configuration file
*/
$compilerConfig = 'includes/config.php';
if (file_exists($compilerConfig)) {
include $compilerConfig;
}
이 시점에서 Magento는 다음 명령문으로 컴파일 모드가 활성화되어 있는지 확인합니다. 코드베이스를 살펴보면 ( '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/
디렉토리 가 하나의 포함 경로 만 있으므로 각 파일은 첫 번째 시도에서 직접 발견됩니다. Magento가 보유한 상당한 양의 파일을 사용하면 시간이 상당히 절약됩니다. 아래 스 니펫은
app / 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로 컴파일됩니다. 파일이 포함될 때마다 수행해야하는 프로세스입니다. 상점의 성능을 더욱 향상시키기 위해 서버에 APC를 설치할 수 있습니다. APC는 opcoded 버전의 파일을 캐시하여 후속 요청에 사용할 수 있도록합니다. 따라서 다음 요청시 : 동일한 프로세스를 다시 수행하고 성능을 저하시키지 않고 APC 캐시에서 파일을 읽습니다.