Экстремальная скорость Magento: как получить мгновенную скорость загрузки страницы

Факт: молниеносно быстрые магазины электронной коммерции имеют более высокий процент конверсии. Даже с учётом размера и сложности Magento можно получить практически мгновенную скорость загрузки страницы. Как ускорить Magento 1.6? Прежде всего, если вы не читали основы ускорения и производительности Magento, вы должны сделать это сейчас. Прочтите введение по ускорению здесь. После того как вы это сделали и если вы до сих пор ещё не вспотели, пришло время, чтобы подняться на ступеньку выше. Пришло время для сверхзвуковой производительности Magento!
Вопрос: Это будет мне стоить денег?
Ответ: Не обязательно. Будут рекомендации как платных, так и бесплатных решений.
- Выберите правильный хостинг
- Распределённые Системы кэширования памяти (Memory Caching Systems) и PHP акселераторы
- Блочное и полностраничное кэширование
- Производительность индексации поиска
- Компиляция и Flat Catalog
- Конфигурация MySQL

Выберите правильный хостинг
Перво-наперво. Если вы не знакомы с серверами, идите к хостингу, который сможет предоставить все преимущества для Magento. Если вы можете без проблем зайти в SSH и вы знаете дистрибутив, с которым вы работаете, то вам не нужны мои советы по хостингу! Для владельцев, которые просто хотят быстрого хостинга для Magento и не хотят никакой головной боли, я рекомендую хостинг Netangels.
Я знаю многих владельце магазинов, которые полагаются на Netangels. У них оптимизированные сервера для Magento, обеспечивают уникальные IP-адреса и SSL сертификаты для отдельных магазинов (сертификат предоставляется для домена). Они также предлагают большую поддержку и могут помочь вам выполнить следующую мою рекомендацию.
Если вы компетентны в управлении серверами, вы можете рассмотреть возможность использования Amazon EC2 или иного облачного хостинга. Официальное Magento wiki имеет подробное руководство по настройке сервера для Magento на EC2 (с большим количество предложений, которые вы найдёте в этой статье).
И ещё одна, последняя, вещь о хостинге. Вы можете спросить вашего хостинг-провайдера о NginX. Это лёгкий, воспроизводительный веб-сервер, который может заменить ваш веб-сервер Аpache. Он очень быстр. Хорошее сравнение между ними двумя находится здесь.

Распределённые системы кэширования памяти и PHP акселераторы
По умолчанию, Magento позволяет кэшировать данные используя файлы или базы данных. Вы захотите более совершенную систему кэш-памяти и ускоритель PHP. Имейте ввиду, эти техники и те, которые последуют за ними, являются весьма продвинутыми. Вам может потребоваться помощь от вашего хостинг-провайдера или разработчика.
Перед рассмотрением это списка, обратите внимание. Некоторые веб-сайты и даже Magento могут смешивать группы Memcached с PHP ускорителями. Memcache/Memcached не ускоритель PHP. Это распределённая система кэширования памяти, которая используется только для хранения кэшированных данных на нескольких серверах с балансировкой нагрузки. Для обеспечения максимальной производительности. я рекомендую использовать как Memcached, так и PHP ускорители. По крайней мере выберите APC и позаботьтесь о Memcache позже.
Чтобы узнать больше о Memcached и системах кэширования памяти кликните здесь.
Чтобы узнать больше о PHP ускорителях, нажмите здесь и посмотрите полный список PHP ускорителей.
Memcached (распределённая система кэширования памяти)
Magento поддерживает несколько систем кэширования изкоробки. Из моего опыта, одно из самых используемых - Memcached. Его даже используют огромные сайты, как Youtube, Facebook и Twitter. После того, как вы установите поддерживаемые системы кэша, всё что вам необходимо сделать, это обновить файл app/etc/local.xml Вот краткий обзор:
1) Если вы используете debian-based Linux дистрибутив, выполните следующее:
sudo apt-get install memcached php5-memcache
2) Обновите ваш файл app/etc/local.xml:
<cache> <backend>memcached</backend><!-- apc / memcached / empty=file --> <memcached><!-- memcached cache backend related config --> <servers><!-- any number of server nodes can be included --> <server> <host><![CDATA[127.0.0.1]]></host> <port><![CDATA[11211]]></port> <persistent><![CDATA[1]]></persistent> </server> </servers> <compression><![CDATA[0]]></compression> <cache_dir><![CDATA[]]></cache_dir> <hashed_directory_level><![CDATA[]]></hashed_directory_level> <hashed_directory_umask><![CDATA[]]></hashed_directory_umask> <file_name_prefix><![CDATA[]]></file_name_prefix> </memcached> </cache>
Имейте ввиду, что эта local.xml конфигурация применяется только, если вы используете только Memcached, без PHP акселератора. Чтобы узнать, как объединить Memcached с акселлератором, таким как APC, читайте дальше.
APC (PHP ускоритель)
APC (Alternative PHP Cache) является очень популярным PHP ускорителем. Вам нужно скопировать расширение APC PHP в ваш каталог расширений PHP, или если вы используете debian-based Linux дистрибутив, вы можете выполнить:
sudo apt-get install php5-apc
…А потом обновить конфигурацию APC, в соответствии с рекомендации в этом официальном Magento форуме:
extension = apc.so #name dependent on your APC cache install [APC] apc.enabled = 1 # Turn APC cache on apc.optimization = 0 # Experimental keep off apc.shm_segments = 1 # Shared memory segments apc.shm_size = 128 # Increase until Cache Full Count remains at 0 apc.ttl = 7200 apc.user_ttl = 7200 apc.num_files_hint = 8096 apc.user_entries_hint = 8096 apc.mmap_file_mask = /tmp/apc.XXXXXX apc.enable_cli = 1 # Allow command line php to function apc.cache_by_default = 1 # Enabled, 0 for filters apc.max_file_size = 5M # Maximum cached file size apc.stat = 1 # 1 for dev, 0 for production, whether the source file is checked for mod date #apc.include_once_override = 1 # Use PHP5.3+ for include_once optimization
Далее вам необходимо обновить ваш файл app/etc/local.xml. Это немного проще, чем Memcached, если использовать ка единственную систему кэширования:
<global> <cache> <backend>apc</backend> <prefix>MAGENTO_</prefix> </cache> </global>
Подождите! Планируете ли вы объединить APC и Memcached? Вот что вам надо сделать в вашей конфигурации ap/etc/local.xml:
<global> <cache> <backend>Apc</backend> <slow_backend>Memcached</slow_backend> <fast_backend>Apc</fast_backend> <slow_backend_options> <servers> <server> <host><![CDATA[127.0.0.1]]></host> <port><![CDATA[11211]]></port> <persistent><![CDATA[1]]></persistent> </server> </servers> <compression><![CDATA[]]></compression> <cache_dir><![CDATA[]]></cache_dir> <hashed_directory_level><![CDATA[]]></hashed_directory_level> <hashed_directory_umask><![CDATA[]]></hashed_directory_umask> <file_name_prefix><![CDATA[]]></file_name_prefix> </slow_backend_options> <memcached> <servers> <server> <host><![CDATA[127.0.0.1]]></host> <port><![CDATA[11211]]></port> <persistent><![CDATA[1]]></persistent> </server> </servers> <compression><![CDATA[]]></compression> <cache_dir><![CDATA[]]></cache_dir> <hashed_directory_level><![CDATA[]]></hashed_directory_level> <hashed_directory_umask><![CDATA[]]></hashed_directory_umask> <file_name_prefix><![CDATA[]]></file_name_prefix> </memcached> </cache> </global>
Мы используем APC для повышения скорость и производительности нашего PHP-кода, с помощью кэширования опкода. Memcached используется для распределения кэша между несколькими балансировочными серверами, как “медленный back-end”.
XCache (PHP ускоритель)
XCache другая система кэширования, поддерживающаяся Magento. Она похожа на APC. Я настоятельно рекомендую использовать APC, т.к она официально поддерживается как часть PHP. Тем не менее, я хотел, чтобы вы были осведомлены о поддерживаемых вариантах. XCache хорошо работает с Apache.
Дополнительная информация о XCache находится здесь. Процесс установки похож на APC и в файле local.xml требуется только несколько дополнительных настроек.
eAccelerator (PHP ускоритель)
Приятная особенность eAccelerator в том. что она не требует никаких дополнительных настроек в Magento. Это очень просто. Однако, он отстаёт от версии PHP и его развитие замедляется. eAccelerator по-прежнему великолепный PHP-ускоритель и я видел его в сочетании с другим ускорителем, таким как IonCube.
Если вы заинтересованы в тонкой настройке eAccelerator для Magento, углубитесь в изучение вот этой статьи.

Блочное и полностраничное кэширование
Теперь, когда мы оптимизировали нашу кэш-память и обработку сессий, мы можем узнать о наиболее важных элементах максимальной оптимизации скорости Magento;
Полностраничное кэширование. Если вы хотите мгновенную загрузку, то это лучшая оптимизация которую вы можете выполнить. У вас есть два выбора, если вы используете Magento CE. Если вы на Magento Enterprise, то вам повезло, поскольку она уже поставляется с полностраничным кэшированием!
Varnish + PAgeCache (Free)
Varnish является конечным ускорителем веб-приложения с исходным кодом, так же известным, как кэширующий обратный HTTP прокси. Оно обычно ускоряет доставку с коэффициентом 300-1000х. Это очень быстро! Если вы ищете бесплатное решения для полностраничного кэширования, используйте Varnish вместе с бесплатным Varnish расширением, таким как PageCache или Cache Extension.
Вы получите молниеносную загрузку страниц с Varnish. Я гарантирую это.
Расширение Tinybrick (Платное)
Tinybrick это популярный производитель расширений Magento. Они предлагают два расширения для Magento по оптимизации скорости: Speed Booster и Light Speed. Speed Booster кэширует каталог и CMS блоки, что значительно ускорят домашнюю страницу и просмотр каталога. Light Speed - расширение для полностраничного кэширования.
Лично я рекомендую использовать оба расширения. Я установил их пере этим и это очень просто, благодаря документации. Из коробки оба расширения делают огромную работу по кэшированию и вы увидите огромный прирост производительности. Тем не менее, он может быть немного сложнее, если вы столкнётесь с конфликтами расширения. Оно не работает с определёнными minification и html compression расширениями.
Если вы хотите абсолютно максимальной производительности от Tinybrick Light Speed, вы должны будете использовать технику называемую holepunching. По умолчанию, Light Speed не обеспечивает кэширование страницы, когда вы добавляете элемент в корзину, или входите в свою учётную запись. Для того, чтобы кэшировать страницы постоянно, необходим holepunching динамических областей. Например, предложим, что у вас 0 единиц товара в корзине. вы решили приобрести товар. Вs должны будете holepunc и переписать блок корзины так, что корзина обновится на “1 товар в корзине”.
Нolepunching может быть трудоёмким и сложным. Оно включает в себя обновление макета XML файла и блоков шаблонов, а так же создание пользовательских holefilling расширений для заполнение пустот с динамическими данными.
Tinybrick Speed Booster для кэширования каталога и CMS блоков (70% ускорения).
Tinybrick Light Speed для полностраничного кэширования (90% ускорения).
Производительность индексации поиска
Одно уточнение, я надеюсь. что Magento улучшит в будущем качество и скорость поиска товаров. К счастью. есть несколько расширений, которые могут помочь вам победить медленный поиск и низкие результаты качества. Ключевые это Apache Lucene или Sphinx, два индексатора и библиотеки поиска с открытым исходным кодом.
Посмотрите эти Magento расширения для начала работы:
- Magento Lucene на GitHub (Бесплатно)
- Blast Lucene Search (Платно)
- aheadWorks Advanced Search (Платно)
- PremierWeb Sphinx Enterprise Search (Платно)

Компиляция и Flat Catalog
Это два совета по скорости, которые должны были быть включены в основы, но для завершения добавлю их сюда.
Компиляция, это расширение ядра Magento, начало появляться в Magento CE 1.4.2. Просто зайдите в Система > Инструменты > Компиляция. Нажмите кнопку “Запустить процесс компиляции”. И это всё что вам надо сделать! Просто убедитесь, что вы тестируете компиляцию вашего магазина на тестовом сервере, прежде чем использовать это на рабочем. Вы можете столкнуться с проблемами. На основании ранее проведённых тестов, команда Magento заявляет от 25 до 50% улучшения производительности, после использования режима компиляции. Там же сценарий командной строки, для взаимодействия с компилятором.
Другой незамеченной и быстрой в настройки конфигурации, которая позволяет увеличить производительность это включение Flat catalog. Magento использует EAV модель хранения данных . которая позволяет повысить расширяемость, но приводит к более медленным запросам SQL. При включении flat catalog вы объединяете данные об изделии в одну таблицу. Это очень удобно для магазинов, с более чем 1000 товаров.
Чтобы включить flat catalog, выберите Система > Конфигурация > Каталог. В разделе “Пользовательская часть” выставьте Да для “Использовать категории каталога с горизонтальной структурой хранения” и “Использовать товары с горизонтальной структурой хранения”.
Убедитесь, что вы очистили кэш после этого. Протестируйте ваш магазин, перед использованием на рабочем. Flat catalog может вызвать проблемы для некоторых расширений и кода который позволяет использовать EAV.
Конфигурация MySQL
В соответствии с рекомендациями Yoav Kutner из Magento, вы можете изменить настройки MySQL сервера, чтобы более эффективно использовать оперативную память вашего сервера. Например my.cnf была взята из его “Производительно ‘то ключ!” записи.
key_buffer = 512M max_allowed_packet = 64M table_cache = 512 sort_buffer_size = 4m read_buffer_size = 4m read_rnd_buffer_size = 2m myisam_sort_buffer_size = 64m tmp_table_size = 128m query_cache_size = 96m query_cache_type = 1 thread_cache_size = 8 max_connections = 400 wait_timeout = 300
Я так же сталкивался с этим интересным постом на Magento Connect, которые цитировали администратора сервера из Rackspace optimizing для сервера на Magento (включая некоторые советы MySQL).
Хорошо что вы получили это! Для получения невероятной быстрого Magento, ускорения Magento 1.6+, всё что вам нужно сделать, это следовать рекомендациям выше и они должны быть установлены. Поговорите со своим хостинг-провайдером и посмотрите, что они предложат. По крайней мере не забудьте установить ускоритель PHP, такой как APC и получите решение по полностраничному кэшированию, такое как Varnish или Light Speed.
Источник: fastdivision.com
2 Notes/ Hide
-
enforcement89to это понравилось
-
xcherepanov это понравилось
-
xcherepanov сделал(а) реблог этого от kuzvac
-
emileeyou89 это понравилось
-
kuzvac это опубликовал(а)