Источник
Этот совет не нов. Он взят непосредственно из документации Zend Framework по адресу: Руководство по производительности Zend Framework , и я использовал то, что было написано, с несколькими вещами, которые я пропустил.
Используйте Zend_Loader и удалите все require_once
На самом деле мы не можем удалить все операторы require_once. У нас должен быть хотя бы один require_once для загрузки Zend_Loader. Сначала активируйте Zend Loader.
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
Далее будет удаление всех операторов require_once для всех файлов в каталоге Zend. Если вы используете Eclipse PDT, вы можете использовать функцию поиска и замены.
Кэшировать метаданные Zend_Db_Table с Zend_Cache
Когда вы используете Zend_Db_Table (я иногда использовал только Zend_Db), вы заметите, что, когда вы пытаетесь получить данные из базы данных, первый запрос называется DESCRIBE таблицы. Zend_Db_Table использует информацию о запросе DESCRIBE, чтобы применить магию к SELECT.
Поскольку я профилировал свои запросы, я заметил, что запрос DESCRIBE является самым длинным (в большинстве случаев) запросом, что означает большие накладные расходы на операцию поиска. У вас есть два варианта:
(A) Не используйте Zend_Db_Table (перейдите на Zend_Db)
(B) Кэшировать метаданные
В этом посте я буду использовать кеширование метаданных. В файл начальной загрузки поместите этот фрагмент кода:
//Caching
$frontendOptions = array(
'lifetime' => 25200,
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => APPLICATION_PATH . '/tmp'
);
$cache = Zend_Cache::factory(
'Core',
'File',
$frontendOptions,
$backendOptions
);
//Cache table metadata
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
Файл класса загрузчика плагина кэша
При использовании плагина Zend Framework включает несколько файлов в зависимости от используемого плагина и обрабатывает несколько итераций, чтобы найти нужный плагин и включить его. С кодом кода ниже, он создает список операторов include_once для включения этих файлов плагинов. Просто включите этот кусок кода в ваш загрузчик.
//Plugin Loader caching
$classFileIncCache = APPLICATION_PATH . '/data/pluginLoaderCache.php';
if (file_exists($classFileIncCache)) {
include_once $classFileIncCache;
}
Zend_Loader_PluginLoader::setIncludeFileCache($classFileIncCache);
Кэширование ваших данных
Кэширование ваших данных будет наиболее важной частью оптимизации, которая сохранит вам большой доступ к базе данных, когда кешированные данные уже доступны. Важно установить время истечения срока действия кеша, а также очистить кеш при изменении данных. Простое кеширование показано ниже.
На вашей начальной загрузке:
//Caching
$frontendOptions = array(
'lifetime' => 25200,
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => APPLICATION_PATH . '/tmp'
);
$cache = Zend_Cache::factory(
'Core',
'File',
$frontendOptions,
$backendOptions
);
$registry->set('cache', $dbCache);
Это основные настройки, которые могут мне помочь.