Есть несколько шагов, которые вы можете предпринять, чтобы увеличить производительность на стороне сервера. Обратите внимание, что некоторые из них не будут работать с большинством общих хостов. Для высокой производительности обычно требуется более точный контроль.
Как и при любой оптимизации, вы должны измерить влияние, которое она оказывает на производительность вашего сайта. Для базовой оптимизации полезны такие инструменты, как PageSpeed и YSlow (я рекомендую версии Firefox). Для более глубокого понимания вам необходимо измерить фактическое время отклика вашей действующей системы за определенный период времени.
PHP
Включить кеширование кода операции
Это, пожалуй, самая большая вещь, которую вы можете сделать, чтобы повысить производительность вашего сайта. Я рекомендую использовать OpCache или APC . Конфигурация этих кэшей может быть изменена для еще большей производительности в зависимости от конкретных потребностей серверов и сайтов, но простая установка - это уже огромный прирост.
Обновить версию PHP
Более новые версии PHP регулярно идут с улучшениями производительности. Кроме того, есть ряд случаев, когда Joomla может использовать лучший код при работе на более новой версии PHP. На сегодняшний день вам не следует использовать версию PHP, более раннюю, чем PHP 5.4, если вы заботитесь о производительности.
Настройки PHP
В более старых версиях PHP (<= 5.3) позаботьтесь о том, чтобы выключить register_globals
и magic_quotes_gpc
получить бесплатную производительность. На PHP> = 5.6 изменить always_populate_raw_post_data
на -1.
Расширения PHP
Joomla содержит некоторый код для обхода отсутствующих расширений PHP. Это всегда будет медленнее, чем эти расширения. Для достойного повышения производительности установите следующие расширения: mbstring
, zip
,ftp
Веб сервер
Включить gzip
Включение сжатия на стороне сервера меняет пропускную способность для ресурсов ЦП. Для большинства сайтов это правильный вызов. Будьте осторожны, сжимая только текстовые данные, сжатие двоичных данных даст вам нагрузку на процессор без преимуществ пропускной способности. Вы также можете включить сжатие в настройках Joomla, но лучше, если вы позволите серверу справиться с этим.
Предварительно сжать статические ресурсы
Я не говорю о минификации (хотя это тоже помогает), но вы можете настроить Nginx и Apache для сервера уже сжатых ресурсов, эффективно устраняя попадание процессора в сжатие gzip. Бонусные баллы: используйте Zopfli для еще небольших файлов.
Используйте FastCGI для PHP
Более конкретно, вы должны использовать php-fpm
. Это предотвращает запуск PHP, когда браузер запрашивает не-PHP-файл.
Используйте соответствующие заголовки кэша
Использование Expires
заголовка может значительно уменьшить необходимые ресурсы сервера. В конце концов, самый быстрый запрос - тот, который никогда не был выполнен.
апаш
Обычно я рекомендую использовать Nginx для высокопроизводительных сайтов. Если по какой-то причине вам абсолютно необходимо использовать Apache, я получил бонусный совет:
Отключить AllowOverride
Установка AllowOverride
для None
предотвращает много дискового ввода - вывода и
Joomla
Не используйте режим FTP
Хотя это не влияет на то, как пользователи читают сайт, это замедлит некоторые операции, такие как установка расширений.
Отключить неиспользуемые расширения
Это особенно касается плагинов, многие из которых запускаются при каждом запросе. Отключение меню и компонентов в основном полезно при перечислении доступных расширений и типов меню. Также потратьте 5 минут, чтобы просмотреть расширения, которые поставляются с ядром Joomla, и отключите те, которые вы не используете.
Выключить подготовить контент
Если вы используете много пользовательских модулей ( mod_custom
не пользовательских, как в самом написании), проверьте, можете ли вы отключить подготовку контента в них. Это экономит некоторую обработку.
Использовать кеширование
Если вы серьезно относитесь к производительности, вы захотите включить кэширование. Особенно полезно для чтения тяжелых сайтов со многими анонимными пользователями. Зарегистрированные пользователи обойдут большую часть кэша, если у вас их много, эффект не будет таким большим.
Используйте альтернативный обработчик сеанса
Используя альтернативный обработчик сеанса, вы можете освободить базу данных для более важных вещей. Я бы не стал рекомендовать файл (который в настройках Joomla называется «None»), так как это снова увеличит дисковый ввод-вывод. Использование APC - это, пожалуй, самый быстрый способ, но он увеличивает риск потери всех данных сеанса. Правая золотая середина - Memcache. Хотя для этого требуется дополнительный процесс, он более надежен, чем APC, и намного быстрее, чем хранение всех данных в базе данных.
Сделайте свой сайт простым
Вам действительно нужна эта кнопка на Facebook? А как насчет этой милой иконки, которую никто никогда не видит, потому что она частично скрыта за каким-то баннером? Чем меньше будет отображаться ваш сайт, тем быстрее он будет. Также везде, где это возможно, используйте CSS3 вместо изображений.
Разнообразный
Установить значок
Благодаря решению, относящемуся к Internet Explorer 4.0, браузеры делают запрос на файл, вызываемый favicon.ico
всякий раз, когда пользователь посещает ваш сайт. Если у вас его нет, это вызывает ненужный ввод-вывод, поскольку 404 ответа не кэшируются. Либо укажите значок вашего сайта с метатегом HTML, либо добавьте файл с именем favicon.ico
в корневой веб-каталог. Не хотите иконку? Поместите прозрачный PNG размером 1x1 пикселей в этом месте. Обратите внимание, что расширение все еще должно быть .ico
.
Оптимизируйте свои изображения
Удивительно, какую экономию можно получить, оптимизируя изображения, особенно файлы PNG. Существует множество инструментов, доступных для любой операционной системы, лично я использую ImageOptim, который доступен для OS X. Основные образы Joomla уже оптимизированы, но изучите ваши собственные изображения, особенно важны шаблоны. Вы также можете проверить используемые вами расширения. Если они с открытым исходным кодом, почему бы вам не отправить запрос на извлечение, содержащий недавно оптимизированные изображения?
Продвинутый
Если вы действительно хотите сделать все возможное, рассмотрите возможность размещения Varnish перед вашим сайтом. Он кэширует запросы на ваш сайт и, если возможно, обслуживает их из своего собственного кэша, никогда не обращаясь к Joomla. Это сложный инструмент, но с большой силой. Joomla не будет использовать расширенные функциональные возможности, такие как Edge Side Includes (ESI), но ваш собственный код может.