В архиве два измененных файла из версии OpenCart 1.4.9.4.
1. Поддержка кэширования через Memcached.
Установка:
1. Берете файл cache.php и перезаписываете им файл system/library/cache.php. Эта процедура не нарушит работу сайта - будет использоватся обычный файловый кэшь.
2. Устанавливаете в системе (или на другом сервере) сервер memcached и запускаете его. Это делается просто - без каких-то особенностей. Единственное, что если будете использовать кэширование в memcached совместно с mysql_cached, скорей всего в конфиге memcached нужно будет увеличить размер используемой памяти. На CentOS, например, после установки выделяется 65 Мб.
2. Идете в корень магазина и текстовым редактором дописываете в config.php строки конфигурации (с параметрами своего memcached сервера):
define('CACHE_DRIVER', 'memcached');
define('MEMCACHE_HOSTNAME', 'localhost');
define('MEMCACHE_PORT', '11211');
define('MEMCACHE_NAMESPACE', 'opencart_test');
Если в CACHE_DRIVER установлено другое значение или нет подключения к memcached серверу, будет использоваться стандартный файловый кэш.
Рекомендую эти-же параметры прописать в файле конфигурации админки - admin/config.php. Сейчас это не очень принципиально, но, надеюсь, в будущем в админке добавяться опции управления кэшем.
Параметр MEMCACHE_NAMESPACE нужен для варианта когда одним сервером memcached будут пользоваться разные магазины - для разделения их кэшей.
Проект на GitHub, скачать
Драйвер для БД MySQL с поддержкой кэширования SQL запросов
Нужен для уменьшения нагрузки на БД у магазинов с большим количеством товара и/или трафика.
Дополнительный драйвер БД для Mysql, в котором происходит кэширование всех SELECT запросов. Время кэширования SQL запросов в секундах задается в config.php.
Установка:
1. Копируете файл mysql_cached.php в каталог system/database/.
2. В корне магазина в файле config.php меняете строку
define('DB_DRIVER', 'mysql');
на
define('DB_DRIVER', 'mysql_cached');
и добавляете
define('DB_CACHED_EXPIRE', 120);
НЕ рекомендую ставить этот драйвер в конфигурации админки. Т.к. в админку не встроены средства сброса кэша и это чревато различными "глюками".
Проект на GitHub, Скачать
В качестве общей рекомендации по оптимизации нагрузки на БД, в первую очередь рекомендую сделать индексы в БД. По результатам оптимизации одного из специалистов возник список рекомендованных для добавления индексов (в данном примере все таблицы с префиксом "oc_". Для вашей базы может понадобится другой префикс или его отсуствие):
oc_product:
alter table `oc_product` add KEY `model` (`model`);
alter table `oc_product` add KEY `stock_status_id` (`stock_status_id`);
alter table `oc_product` add KEY `quantity` (`quantity`,`date_available`);
alter table `oc_product` add KEY `tax_class_id` (`tax_class_id`,`weight_class_id`,`length_class_id`);
alter table `oc_product` add KEY `sort_order` (`sort_order`);
oc_product_option_description:
alter table `oc_product_option_description` add KEY `product_id` (`product_id`);
oc_product_option_value:
alter table `oc_product_option_value` add KEY `product_option_id` (`product_option_id`);
alter table `oc_product_option_value` add KEY `product_id` (`product_id`);
oc_url_alias:
alter table `oc_url_alias` add UNIQUE KEY `query` (`query`);
alter table `oc_url_alias` add KEY `keyword` (`keyword`);
oc_zone:
alter table `oc_zone` add KEY `country_id` (`country_id`);
отсюда:
http://forum.opencart.ua/viewtopic.php?f=5&t=79
1. Поддержка кэширования через Memcached.
Установка:
1. Берете файл cache.php и перезаписываете им файл system/library/cache.php. Эта процедура не нарушит работу сайта - будет использоватся обычный файловый кэшь.
2. Устанавливаете в системе (или на другом сервере) сервер memcached и запускаете его. Это делается просто - без каких-то особенностей. Единственное, что если будете использовать кэширование в memcached совместно с mysql_cached, скорей всего в конфиге memcached нужно будет увеличить размер используемой памяти. На CentOS, например, после установки выделяется 65 Мб.
2. Идете в корень магазина и текстовым редактором дописываете в config.php строки конфигурации (с параметрами своего memcached сервера):
define('CACHE_DRIVER', 'memcached');
define('MEMCACHE_HOSTNAME', 'localhost');
define('MEMCACHE_PORT', '11211');
define('MEMCACHE_NAMESPACE', 'opencart_test');
Если в CACHE_DRIVER установлено другое значение или нет подключения к memcached серверу, будет использоваться стандартный файловый кэш.
Рекомендую эти-же параметры прописать в файле конфигурации админки - admin/config.php. Сейчас это не очень принципиально, но, надеюсь, в будущем в админке добавяться опции управления кэшем.
Параметр MEMCACHE_NAMESPACE нужен для варианта когда одним сервером memcached будут пользоваться разные магазины - для разделения их кэшей.
Проект на GitHub, скачать
Драйвер для БД MySQL с поддержкой кэширования SQL запросов
Нужен для уменьшения нагрузки на БД у магазинов с большим количеством товара и/или трафика.
Дополнительный драйвер БД для Mysql, в котором происходит кэширование всех SELECT запросов. Время кэширования SQL запросов в секундах задается в config.php.
Установка:
1. Копируете файл mysql_cached.php в каталог system/database/.
2. В корне магазина в файле config.php меняете строку
define('DB_DRIVER', 'mysql');
на
define('DB_DRIVER', 'mysql_cached');
и добавляете
define('DB_CACHED_EXPIRE', 120);
НЕ рекомендую ставить этот драйвер в конфигурации админки. Т.к. в админку не встроены средства сброса кэша и это чревато различными "глюками".
Проект на GitHub, Скачать
В качестве общей рекомендации по оптимизации нагрузки на БД, в первую очередь рекомендую сделать индексы в БД. По результатам оптимизации одного из специалистов возник список рекомендованных для добавления индексов (в данном примере все таблицы с префиксом "oc_". Для вашей базы может понадобится другой префикс или его отсуствие):
oc_product:
alter table `oc_product` add KEY `model` (`model`);
alter table `oc_product` add KEY `stock_status_id` (`stock_status_id`);
alter table `oc_product` add KEY `quantity` (`quantity`,`date_available`);
alter table `oc_product` add KEY `tax_class_id` (`tax_class_id`,`weight_class_id`,`length_class_id`);
alter table `oc_product` add KEY `sort_order` (`sort_order`);
oc_product_option_description:
alter table `oc_product_option_description` add KEY `product_id` (`product_id`);
oc_product_option_value:
alter table `oc_product_option_value` add KEY `product_option_id` (`product_option_id`);
alter table `oc_product_option_value` add KEY `product_id` (`product_id`);
oc_url_alias:
alter table `oc_url_alias` add UNIQUE KEY `query` (`query`);
alter table `oc_url_alias` add KEY `keyword` (`keyword`);
oc_zone:
alter table `oc_zone` add KEY `country_id` (`country_id`);
отсюда:
http://forum.opencart.ua/viewtopic.php?f=5&t=79
0 коммент.:
Отправить комментарий