Советы по оптимизации скорости сайта, с чего начать?

16

Меня попросили попытаться найти решение для медленной загрузки нашего сайта Magento. Я провел тест Ислоу, и самые большие преступники, кажется,

  • Делать меньше HTTP-запросов
  • Используйте CDN
  • Добавить Expires Headers
  • Поместите JavaScript внизу
  • Сократить jS и CSS
  • Настроить теги ET
  • Уменьшить поиск DNS
  • Избегайте фильтра AlphaImageLoader

Как менеджер по электронной коммерции, я ищу несколько советов относительно того, что я могу сделать, исходя из своей роли в администрировании Magento, инструментов для веб-мастеров и т. Д., И того, что я могу поручить разработчику сделать наш сайт соответствующим требованиям и заметно более быстрым.

Я также смотрел на плагин под названием GTMetrix, который, кажется, делает это для вас в рамках администратора (объединяет таблицы CSS, оптимизирует изображения и т. Д.), У кого-нибудь есть опыт с этим? Я обычно стараюсь избегать слишком многих расширений, которые так глубоко проникают в основные функции, но, кажется, могут быть решением. http://gtmetrix.com/magento-optimization-guide.html

Ваш совет был бы очень признателен, так как мне трудно понять, с чего начать, чтобы оказать лучшее влияние.

Заранее спасибо.

введите описание изображения здесь

введите описание изображения здесь

Brandon
источник
Взгляните на magento.stackexchange.com/questions/460/…
Дэвид Мэннерс

Ответы:

27

(скопировано из моего собственного блога на https://www.gui.do/post/101-ways-to-speed-up-your-magento-e-commerce-website )

А) Хостинг / Общие советы

  1. Получите выделенный сервер.
  2. Разместите свой сайт в стране, где находятся ваши клиенты.
  3. Не размещайте на своем веб-сервере файлы, которые вы не используете, большие или маленькие.
  4. Перейдите к MySQL Admin и выберите все таблицы и восстановите, а затем оптимизируйте их.
  5. Используйте PHP-ускоритель, такой как APC, ZendOptimizer + или Xcache.
  6. Устанавливайте только необходимые модули Apache.
  7. Используйте Apache mod_expires и не забудьте установить, как долго файлы должны кэшироваться. Вы можете использовать приведенный ниже пример для конфигурации виртуального хоста Apache: # Включить Expires и установить значение по умолчанию 0 ExpiresActive On ExpiresDefault A0 # Установить кэширование медиа-файлов на 1 год (навсегда?) ExpiresDefault A29030400 Добавление заголовка Cache-Control "public" # Настройка кэширования на мультимедийных файлах в течение 2 недель ExpiresDefault A1209600 Добавление заголовка Cache-Control "public" # Настройка кэширования на 1 неделю для часто обновляемых файлов ExpiresDefault A604800 Добавление заголовка Cache-Control "proxy-revalidate"
  8. Включите сжатие Gzip в htaccess .
  9. Сжать вывод, используйте zlib.output_compression или mod_deflate.
  10. Используйте сеть доставки контента (CDN) для параллельной передачи статического контента. Существует расширение Magento, которое может помочь вам сделать это с категориями и изображениями продуктов: One Pica Image CDN . Но ... (см. Следующий совет).
  11. Не используйте слишком много различных внешних источников (для изображений, iframes, (твиттер / фейсбук) и т. Д.) И т. Д.), Поскольку каждый поиск DNS занимает дополнительное время, и вы создаете дополнительную зависимость (на каком-либо стороннем сервере) для правильной загрузки вашего сайта ,
  12. Включите Apache KeepAlives: убедитесь, что в вашей конфигурации Apache включена функция KeepAlives. KeepAlives - это хитрость, при которой несколько HTTP-запросов могут передаваться через одно TCP-соединение. Настройка каждого TCP-соединения требует дополнительного времени, что может значительно сократить время, необходимое для загрузки всех файлов (HTML, JavaScript, изображений) для веб-сайта. Больше информации на Apache.org . Будьте осторожны, я слышал от некоторых, что это создает (большую) дополнительную нагрузку на сервер и может привести к сбою сервера в моменты большого трафика!
  13. Минимизируйте перенаправления.
  14. Сделайте ваш вывод W3C-совместимым. Ошибки замедляют работу браузера.
  15. Поменяйте местами Apache для NginX или Litespeed. Если это не вариант, перейдите на Zend Server (в идеале не-CE версия, чтобы вы могли использовать полное кэширование страниц).
  16. Отключите или хотя бы сократите ведение журнала веб-сервера (уменьшите запись на диск).
    • Отключить регистрацию времени доступа. Magento Wiki : Для серверов Linux, если у вас включено ведение журнала времени доступа на любом из ваших разделов mysql, веб-сервера или кэша, попробуйте отключить его для повышения производительности. Если вы используете ext3 или reiserfs, вы можете использовать более быстрые методы записи в журнал. Для получения дополнительной информации см. Linux.com .
  17. Скомпилируйте MySQL из исходного кода вместо менеджера пакетов вашей ОС.
  18. Всегда обновляйтесь до последней версии Magento. Вы не только получите больше функций и исправлений ошибок, но и с каждым обновлением Magento будет работать лучше.
  19. Размер Query Cach: Блог Magento : Измените конфигурацию вашего сервера MySQL, чтобы лучше использовать ОЗУ вашего сервера. Большинство дистрибутивов Linux предоставляют консервативный пакет MySQL из коробки, чтобы гарантировать, что он будет работать на широком спектре аппаратных конфигураций. Если у вас достаточно ОЗУ (например, 1 ГБ или более), вы можете попробовать настроить конфигурацию. Пример my.cnf приведен ниже, хотя вы можете обратиться к документации MySQL для получения полного списка директив конфигурации и рекомендуемых настроек.
  20. установите php_value memory_limit 128M в вашей конфигурации php или добавьте его в ваш файл .htaccess, чтобы убедиться, что у вас не хватает памяти.
  21. Используйте основанную на памяти файловую систему для динамических данных. Если вы храните динамические данные ( var / cache , var / session ) на RAMdisk или tmpfs, дисковый ввод-вывод уменьшается.
  22. Измените realpath_cache_size в php.ini.
    realpath_cache_size = 1M ( осторожно , это является  в процессе апаша )    realpath_cache_ttl=86400 (ok for production site) 
  23. Memcache (для хардкора) описан в http://www.magentocommerce.com/boards/viewthread/9037/ и в других советах по адресу http://alexle.net/archives/275, которые помогут вам начать работу.
  24. Отключите директиву open_basedir PHP. Прочитайте это .
  25. Исключите проверку структуры каталогов для файлов .htaccess.
  26. Рекомендуется innodb_buffer_pool_size.
    • Объединенный веб-сервер и сервер базы данных, 6 ГБ ОЗУ:  2-3 ГБ
    • Выделенный сервер базы данных, 6 ГБ ОЗУ: 5 ГБ
    • Выделенный сервер базы данных, 12 ГБ ОЗУ: 10 ГБ
  27. Cach Query: query_cache_size: 64 МБ, query_cache_limit: 2 МБ
  28. Использование отдельного внутреннего сервера для обработки пользователей с правами администратора, обработки внутренней активности (cron), предварительного генерирования полного кэширования страниц и обработки медиазапросов.
  29. Используйте несколько веб-узлов (веб-серверов) для управления просмотром и оформлением заказа.
  30. Используйте кэширование обратного прокси Varnish, объяснение Magento @alistairstead: Varnish ваш магазин Magento, сделайте так, чтобы он летал !.
  31. Если у вас есть популярный сайт, который активно сканируется поисковыми машинами, вы можете сэкономить некоторые ресурсы, настроив файл robots.txt.
  32. Попробуйте некоторые из этих расширений кеша:
    • http://www.artio.net/magento-extensions/m-turbo-accelerator
    • http://www.aitoc.com/en/magento_booster.html
    • http://www.tinybrick.com/magento-modules/performance.html/
  33. Установите дополнение Yireo DisableLog. Это предотвращает запись Magento тонны вещей в вашу базу данных, что бесполезно, когда вы уже используете что-то вроде Google Analytics.

Б) Шаблон

  1. Оптимизируйте все ваши (шаблонные) изображения - большинство, если не все, должно быть не менее 10 КБ.
    • Обрезать пустое пространство с помощью вашего редактора изображений.
    • Используйте файлы PNG8 или GIF, а не Jpegs и не используйте прозрачность (в зависимости от того, сколько цветов вы используете и насколько велико изображение, но попробуйте сами).
    • Масштабирование изображений: создавайте изображения в нужных вам размерах, не меняя их размер в редакторе.
    • Используйте сжатие изображений (вы можете использовать smush.it, чтобы сделать это за вас).
    • Используйте CSS Sprites, есть даже CSS Sprite Generators .
  2. Сократите ваш Css, удалите неиспользуемый код .
  3. Минимизируйте использование Javascript.
  4. Используйте легкий шаблон в качестве основы для вашего шаблона. Например: тема SEO Yoast Blank .
  5. Укажите размеры изображения .
  6. Используйте блокировку кеша и вывод HTML в ваших расширениях.
  7. Примените Javascript Lazy Loader для прототипа .

C) Magento конфигурация

  1. Удалите все расширения, которые вы на самом деле не используете.
  2. Отключите модули, которые вы не используете:  Система -> Конфигурация -> Дополнительно -> Дополнительно. ! [введите описание изображения здесь] [1]
  3. Включить все кэши Magento: Система -> Управление кэшем.  
  4. Используйте сторонний Stats Tracker, такой как Google Analytics, а не локальный. Большая часть этого будет использовать Javascript, самостоятельно размещать Javascript.
  5. Объедините Javascript и Объедините файлы CSS : Система -> Конфигурация -> Дополнительно -> Разработчик -> «Настройки Javascript» и «Настройки CSS» . Вы также можете рассмотреть возможность использования расширений, например, расширение Fooman Speedster , в зависимости от того, что вам больше подходит.
  6. Попробуйте некоторые расширения производительности Magento.
  7. Включите Magento Flat Catalog, полезно только для очень больших каталогов, чтобы почувствовать улучшения.
  8. Не используйте многоуровневую навигацию, если она вам действительно не нужна, она требует значительных ресурсов.
  9. Используйте функцию компиляции Magento. Сообщается, что вы получите повышение производительности на 25% -50%: Система> Инструменты> Компиляция. Редактировать: Йоав Катнер (Magento CTO) дал мне знать, что « в более поздних версиях, поскольку мы оптимизировали каталог EAV, компиляция Magento на самом деле не нужна, если у вас есть кэширование байт-кода и если он настроен правильно ».
  10. Используйте правильное хранилище сеансов, выберите файловую систему или базу данных (во время установки). Большинство установок должны использовать «файловую систему», потому что она быстрее и не приводит к росту базы данных. Но если ваш сайт будет работать на нескольких серверах, вы должны выбрать «базу данных», чтобы данные сеанса пользователя были доступны независимо от того, с какого сервера обслуживается его запрос. Больше информации об этом от Эшли Шредер на Magebase.com.
  11. Ограничьте количество продуктов на странице обзора продуктов.
  12. Установите только те свойства внешнего интерфейса атрибута «Да», которые вы на самом деле собираетесь использовать. Установите все остальные на «Нет». Не используйте для быстрого поиска, сравнения расширенного поиска и т. Д.: Каталог -> Атрибуты -> Управление атрибутами -> Свойства внешнего интерфейса.  
  13. Отключите журнал Magento : Система -> Конфигурация -> Дополнительно -> Разработчик -> Настройки журнала (по умолчанию отключено).  

Предприятие только совет:

  • Отключить Enterprise_CatalogEvent. Перейдите в Admin -> Система -> Конфигурация -> Каталог -> Каталог событий. Затем вы хотите отключить настройки «Включить функциональность событий каталога» и «Включить виджет событий каталога».
  • Включите поиск Solr, это быстрее по сравнению с настройками по умолчанию, особенно если у вас много продуктов (> 10k).
  • Включить полное кэширование страниц.

D) Тестирование скорости, анализ, мониторинг

  1. Проверьте свой сайт Magento с помощью теста скорости Magento (Эшли Шредер)
  2. Запустите свой сайт через websiteoptimization.com.
  3. Воспользуйтесь расширением Google Page Speed ​​Firefox или Yahoo Yslow, чтобы получить советы от Google и Yahoo.
  4. Внедрите измерения Google Speed ​​в Analytics: измерьте время загрузки страницы с помощью отчета Speed ​​Site Analytics.
  5. Контроль скорости и оповещения о простоях.
    • Mon.itor.us
    • Pingdom

Бонусные советы

(потому что он на самом деле не ускоряет внешний интерфейс, а только внутренний):

  • Используйте K-Meleon, если вы используете Windows для общей работы администратора. Это делает тяжелый JS-сервер Magento значительно быстрее, чем любой другой браузер.
  • Используйте расширение GoogleGears от Yireo.com для локального кэширования статических файлов.
  • Используйте локальное приложение pc / mac для управления Magento (например,  mag-manager.com ).

Я понимаю, что вы, вероятно, не можете использовать все вышеперечисленные советы, но речь идет не об их использовании, и иногда вы просто делаете выбор отдавать функциональности приоритет над производительностью, и это нормально. Если вы можете применить только некоторые из них, вы все равно увеличите скорость и улучшите пользовательский опыт. И помните: поскольку скорость зависит от многих переменных, некоторые советы могут вообще не повлиять на ваш сайт, в то время как другие могут оказать огромное влияние. Поэтому всегда проверяйте результативность каждого вашего шага и принимайте соответствующие меры.

Гвидо Янсен
источник
4
  1. Изображения - я видел много случаев, когда человек, загружающий изображения (продукты, страницы CMS и т. Д.), Не обучен тому, как оптимизировать размеры изображений. Есть много статей, доступных в Интернете, но многие из них просто здравый смысл.

    • Не используйте изображения для текста.
    • Используйте JPEG / GIF / PNG надлежащим образом (т.е. обычно не используйте PNG для фотографических изображений)
    • Используйте спрайты для маленьких изображений, так как вы можете упаковать кучу маленьких изображений в один файл, предоставляя вам только один HTTP-запрос вместо десятков или более. Вы могли бы также рассмотреть значки шрифта.
    • Сохраняйте изображения с минимально возможным качеством, оставаясь приемлемо видимым. Я нахожу сладкое место, которое часто имеет качество 50-60 для JPEG. Иногда качество 20 вполне приемлемо, и вы можете уменьшить изображение с 300Кб до 30Кб. Это большая экономия.
    • Рассмотрим ленивую загрузку на тяжелых страницах изображений.
  2. HTTP-запросы - еще один крупный преступник. Иногда вы можете сделать немного, чтобы уменьшить количество запросов, но вы всегда должны стараться сделать это как можно ниже. Magento предоставляет некоторые функции, чтобы помочь с этим из коробки (слияние CSS / JS).

  3. Дополнительные поиски DNS - я бы сказал, что это наиболее важно для процесса корзины / оформления заказа. Многие магазины будут иметь различные интеграции API, которые вызывают сервисы. Несмотря на то, что вы не можете сделать многое для того, чтобы гораздо быстрее получить ответ API от провайдера доставки, вы можете, по крайней мере, определить медленные сервисы, которые в противном случае не будут очевидны. Подумайте о дополнительном времени, которое может занять проверка, если вы звоните в UPS, FedEx, USPS, поставщики налоговых ставок, поставщики платежей, партнерские сайты и т. Д.

  4. Другие факторы. Некоторые другие факторы, упомянутые в вашем отчете, вероятно, не окажут такого большого влияния, как изображения и HTTP-запросы. Конечно, стоит минимизировать CSS и Javascript, но реальные выгоды заметны только в долгосрочной совокупности. Кроме того, CDN действительно может помочь, особенно если вы предлагаете загружаемые продукты.


Я думаю, что на хостинге часто уделяется слишком много внимания. В прошлом мне было поручено выполнить некоторые настройки сервера для повышения скорости работы сайтов, только чтобы узнать, что домашняя страница загружает 20 МБ ресурсов.

Аналогичным образом, технический документ Magento о производительности сервера не принесет никакой пользы, если ваш сайт построен неаккуратно и слишком много наворотов. Если ваша цель состоит в том, чтобы повысить скорость вашего сайта, то на первом этапе вам нужно посмотреть на сами страницы, чтобы найти неэффективные. Только после того, как вы определили, что ваш сайт настолько скудный и подлый, насколько вы этого хотите, вы можете приступить к обновлению своего хостинга.

Для справки, сайт, которым я управляю, использует SIP-200 на Nexcess около пяти лет или около того и получает в среднем 5000 посещений в день (это сезонно, поэтому его максимальная скорость превышает 10 тыс. В конце весны / начале осени). У меня нет абсолютно никаких претензий к серверу этого класса для этого сайта, и мы используем довольно стандартную версию Magento CE с тысячами продуктов в десятках категорий.

pspahn
источник
2

Изображения - огромная проблема в Интернете, почти такая же большая, как и JavaScript. Первое, что вам нужно сделать, это оптимизировать ваши изображения.

  • Настройка сети доставки контента
  • Оптимизируйте свои изображения
  • Используйте Image LazyLoader

Теперь на ваши файлы Javascript :

  • Сожмите и объедините их
  • Устраните дополнительные перезагрузки страницы, используя больше ajax
  • Перетащите файлы JS в нижний колонтитул
  • Загрузите ваши файлы JS из другого домена

Кеш как сумасшедший

  • Включите кеширование MySql и увеличьте размер пула памяти
  • Включите кэширование APC, чтобы PHP не приходилось каждый раз переучиваться
  • Включите полное кэширование страниц в Magento и используйте Apache Caching
  • Включите GZIP, чтобы быстрее доставлять ваши файлы пользователю.
  • Включите соответствующие заголовки Expires, чтобы ваши пользователи тоже кешировали

Magento также имеет ряд внутренних механизмов кэширования:

  • Включить очевидное кэширование Magento
  • Включить сжатие и компиляцию CSS и JS от администратора
  • Включить плоский каталог и продукты, чтобы ускорить вызовы MySQL
  • Включите Magento Compiler для ускорения автозагрузчика PHP

Если вам нужны подробности, я взял информацию из этой базы знаний .

Консультант по электронной коммерции
источник
0

Вот что я бы посоветовал ускорить сайт Magento:

  1. Провести сторонний аудит расширений и аудит TTFB. Некоторые пользовательские плагины замедляют работу Magento. Получить список всех сторонних модулей и отключить их один за другим. Оцените скорость с www.webpagetest.org. Когда вы узнаете обидчика, свяжитесь с его продавцом и сообщите ему. Для запуска аудита TTFB установите бесплатную программу xhprof или используйте NewRelic .

  2. Узнайте, достаточно ли ресурсов вашего хостинга для запуска Magento. Установите свежую копию Magento той же версии на вашем хостинге. Сравните его скорость с живым сайтом. Если это значительно быстрее, чем ваш сайт, то ваш хостинг в порядке. Если это так же медленно, как ваш живой сайт, то ваш хостинг не очень хорош.

  3. Выполните различные оптимизации веб-интерфейса. К ним относятся: оптимизация изображений, сжатие gzip, минимизация CSS / JS. Вы можете получить отчет о том, что вам нужно сделать, запустив свой сайт в Google PageSpeed ​​Insights. .

Взято из моей статьи .

Константин Герасимов
источник
Каков наилучший способ провести аудит сторонних расширений? Благодарю. @Konstantin Gerasimov
Gem
0
  • Вам нужно сосредоточиться как на оптимизации вашего сайта (структура, CSS, изображения и т. Д.), Так и на поиске действительно быстрого хостинга.

  • Я бы посоветовал вам найти хост, который предоставляет хранилище SSD и Cloudflare CDN и какие хостинговые сервисы специально оптимизированы для веб-сайтов на основе Magento.

  • В настоящее время я использую так называемый «популярный» план для своего сайта, и он отлично справляется со своей задачей.

  • Вот его полные спецификации: https://www.bgocloud.com/hosting/websites-cpanel/popular-plan .

Если вы считаете, что эти функции вам не подходят, вы можете взглянуть на другие планы или на страницу выделенных серверов.

Джеймс Аллан
источник
-1

Я нашел самую важную вещь в отношении скорости сайта, а magento - ваш сервер. Вы на выделенном хосте? Вы должны быть. Особенно один с SSD накопителями. Самая медленная часть Magento - это то, как он на самом деле обрабатывает PHP и отображает страницу, и единственный способ бороться с этим - лучший сервер. Также полный кеш страницы, попробуйте Lesti FPC.

user4517
источник
Привет спасибо за ваш ответ У меня было ощущение, что наша конфигурация сервера может быть не той, что нам нужна, но я здесь новичок и просто изучаю их систему, и мне никогда не приходилось слишком углубляться в работу системного администратора. Я выкопал наш последний счет (при условии, что это сервер, на котором мы работаем Magento): 18636 Dual Xeon E5-2609 (E52609) ОЗУ: 16 ГБ Жесткий диск 1: 500 ГБ SATA Жесткий диск 2: 500 ГБ SATA Жесткий диск 3: 64 ГБ Samsung 830 Жесткий диск SSD 4: Нет Контроллер жесткого диска: Встроенный контроллер
Брэндон
Я не могу согласиться с этим ответом. Если ваш сайт перегружен большими изображениями, тоннами HTTP-запросов и запросов к сторонним службам (UPS, налоговые службы и т. Д.), Лучший выделенный хост в мире ничего не сделает для вас. Начните с правильной работы сайта, а затем рассмотрите возможность обновления хостинга, если это применимо.
pspahn
К вашему сведению Брэндон. Samsung 830 - это дисковод, предназначенный для домашних компьютеров, а не для серверов. Не похоже, что ваш сервер вообще является сервером.
choco-loo
-1

Существует длинный и короткий ответ, поскольку Гвидо уже указал на эти шаги, которые необходимо выполнить для настройки. Вам нужно будет найти какой-нибудь компетентный ресурс для прохождения всех комбинаций, чтобы найти наилучшую подгонку, это довольно много времени, но нужно пройти через стандартные процессы на сайтах Magento. Существует также короткий ответ, но мы работаем с инкубатором, и они используют корпоративные методы в основном для платформ более высокого уровня, однако перенесли его в Magento, но здесь это не будет актуально. Вам нужно будет найти точный баланс между аппаратным обеспечением, частотой кадров, кэшированием, бизнес-требованиями, единственная проблема заключается в том, что после выполнения упражнения, если вы что-то существенно измените, вам потребуется выполнить его повторно.

Acornia
источник
-1

Или вы пропускаете все это, используете тот же стек технологий, что и Etsy, тот же хостинг, что и Very с мультиузлами, пропускаете fpc, около fpc ttfb, динамические загрузки 1-2s, и используете Pagespeed, все вместе добавленные, давая вам As по всем направлениям. , Теперь, если у вас есть более усердные кодеры и добавленные расширения, есть ограничения. Это зависит от того, хотите ли вы идти по технологическому пути и пройти все это до n-й степени, когда программисты не согласятся с бизнесом, или вы придерживаетесь бизнес-точки зрения и находите лучшее решение, несмотря на технологические протесты, часто приводящие к менее техническому Работа.

CreativeWest
источник