Статьи

Руки по улучшению Google PageSpeed

Конечный продукт
Что вы будете создавать

Google PageSpeed ​​- это бесплатный инструмент, который оценивает производительность и удобство использования вашего сайта для мобильных и настольных платформ. Это очень важно, потому что Google использует его для определения ключевых элементов нашего SEO рейтинга, то есть того, насколько высоко мы оказываемся в их результатах поиска.

Если вы хотите больше узнать о преимуществах повышения скорости сайта, прочитайте статью Moz, Почему Оптимизация скорости сайта должна быть частью вашей стратегии SEO , в которой подчеркивается: «… несколько примеров показали, что более быстрая загрузка страниц сильно коррелирует с более высоким доходом».

В этом уроке я расскажу вам о некоторых технических подходах для оптимизации PageSpeed ​​вашего сайта WordPress. Хотя базовые изменения могут быть довольно простыми и легкими, более комплексные обновления могут быть довольно сложными.

Интересно, что пользовательские сайты легче оптимизировать, чем сайты WordPress, — это связано с широким использованием в платформе сторонних тем и плагинов. Он также основан на архитектуре, которая была разработана до его популярности и опирается на несовершенную архитектуру для обратной совместимости.

Прежде чем мы начнем, пожалуйста, помните, я стараюсь участвовать в обсуждениях ниже. Если у вас есть вопрос или предложение по теме, пожалуйста, оставьте комментарий ниже или свяжитесь со мной в Twitter @reifman . Мне интересен ваш опыт работы с WordPress и PageSpeed.

В этом уроке я сосредоточусь на улучшении своего личного сайта JeffReifman.com .

Некоторое время назад моим PageSpeed ​​были Mobile 65 и Desktop 64 — не так уж и здорово:

Оптимизация PageSpeed ​​- начальный мобильный

Примечание: вот статья, которую вы можете прочитать, если вам интересно узнать забавный скриншот с Расселом Уилсоном .

Оптимизация PageSpeed ​​- начальный рабочий стол

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

Есть несколько основных способов начать оптимизацию вашего сайта WordPress для повышения производительности и увеличения PageSpeed.

На PageSpeed ​​различных тем большое влияние оказывают количество и размер файлов JavaScript и CSS, которые они используют, количество используемых изображений и их размер, а также подход их мобильной реализации, то есть, как правило, отзывчивый в настоящее время.

Если вы ищете новую тему WordPress и хотите оценить PageSpeed, вы можете быть удивлены тем, что оценки по известным темам часто идут в 60–70-х годах, но также и в 90-х годах. Вот пара статей, оценивающих темы и PageSpeed ​​через ColorLib и WPMU . В любом случае я ожидал большего.

Я пользуюсь темой Construct My Site My Way в течение нескольких лет. Интересно, что сайт поддержки компании недавно замолчал, и они не оставили никаких объяснений пользователям .

MySiteMyWay Discontinued - пользовательский форум извергается

Однако, поскольку больше не будет обновлений для темы, мне будет немного легче внести некоторые радикальные изменения в его производительность для этого учебника, не имея дело с будущими обновлениями кода от компании. Я вернусь к этому в ближайшее время.

Использование выделенных серверов, скорее всего, будет работать лучше, чем все более распространенные и более доступные виртуальные общие серверы. В прошлом я писал о том, как установить WordPress на общих провайдеров, таких как Digital Ocean . Также есть промежуточные сервисы, такие как WP Engine , которые предлагают внимание разработчикам, а также общим и выделенным серверам.

Качество хоста тоже будет иметь значение. Многие открытые провайдеры WordPress могут обеспечить непоследовательную производительность.

Например, я использую тему KnowHow как в публикации с WordPress, размещенной на виртуальном сервере Digital Ocean, так и в Flee the Jungle, размещенной на WP Engine. Сайты довольно похожи по весу контента, например, использование текста и изображений. PageSpeed ​​для публикации с использованием WordPress PageSpeed ​​- это Mobile 73 и Desktop 88, а «Побег из джунглей» в WP Engine был немного быстрее (Mobile 78 и Desktop 91); Управляемый хостинг WP Engine немного быстрее моего собственного хостинга с общим сервером.

Я также видел низкую производительность с низким уровнем хостинга Amazon AWS. Ты получаешь то, за что платишь.

Кэширование WordPress имеет решающее значение для производительности, и я регулярно писал о моих любимых: W3TC и Varnish Cache, например, Оптимизация WordPress с помощью Varnish и W3 Total Cache .

Google PageSpeed ​​улучшен с W3 Total Cache

Еще одна важная услуга — сеть доставки контента. Ранее я писал об ускорении доставки контента с помощью KeyCDN для Envato Tuts +, а затем решил переключиться на них.

Оптимизация PageSpeed ​​- KeyCDN Dashboard

Регулярное уменьшение размеров и размера файлов изображений в WordPress является трудоемким, но критически важным.

Я регулярно использую Acorn как легкий инструмент для быстрого уменьшения изображений в Интернете. Я смеялся, когда кто-то недавно написал в твиттере, что он только что открыл Photoshop и будет доступен для телефонных звонков, пока он загружен — Acorn маленький и быстрый. Эта модель подписки Adobe загружается очень медленно — извините, подписчики.

Есть также плагины для автоматической оптимизации изображений, такие как WP-Smush . Недавно я начал экспериментировать с новым Optimus от KeyCDN. Кроме того, вот краткий обзор 10 лучших плагинов для оптимизации изображений WPMU для ускорения работы вашего сайта WordPress .

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

Вы можете прочитать Руководство по оптимизации изображений Google PageSpeed, но я все чаще обнаруживаю, что справка Google чрезмерно ориентирована на исследования (что приятно иметь в качестве ресурса), но не очень полезна для самостоятельного решения проблем. Там может быть слишком много докторов наук и слишком мало реальных пользователей.

Хотя у меня всегда были W3TC и Varnish, добавление KeyCDN и Optimus увеличило мой PageSpeed ​​для Mobile 72 и Desktop 82, что является хорошим улучшением с 65 и 64:

Оптимизация PageSpeed ​​- Обновленные результаты

Интересно, что жалобы Google на кэширование изображений выглядят так, как будто они могут продолжаться бесконечно, независимо от того, что вы улучшаете. В этом уроке я экспериментировал с оптимизацией некоторых из оставшихся преступников, чтобы увидеть, что произойдет. Результат был интересным, и я расскажу вам больше об этом в ближайшее время.

Если вы выполнили все основные основы, описанные выше, то улучшение вашей PageSpeed ​​с помощью WordPress требует значительных усилий и может занять довольно много времени.

Статический сайт обычно имеет один файл с CSS и JS-включениями, которые можно легко минимизировать и комбинировать. WordPress намного сложнее.

Так много создается динамически с помощью WordPress — хм — не идеальная архитектура. Может потребоваться время, чтобы найти, где создаются файлы, находятся ли они в темах или плагинах, и как решить эти проблемы. Оказывается, когда у вас есть семь плагинов, включая файлы JavaScript, и вы хотите свести их к минимуму и объединить в одно включение, допуская регулярные обновления плагинов, это довольно сложная задача.

Обновление настроек W3TC HTML для минимизации быстро разрешило жалобу PageSpeed ​​по этому поводу.

Оптимизация PageSpeed ​​- Минимизируйте HTML с W3TC

Для CSS мне пришлось по отдельности добавлять файлы, о которых меня предупредил PageSpeed, в W3TC CSS File Management. Затем W3TC начал минимизировать мой CSS и объединять названные файлы в один файл для включения.

Оптимизация PageSpeed ​​- Сократить CSS

Это решило требование минимизации CSS для PageSpeed.

Оптимизация PageSpeed ​​- публикация HTML и CSS минимизирует результаты

Это также уменьшило число файлов CSS, о которых сообщалось для блокировки рендера, с семи до четырех файлов, связанных с темами (сначала перечисленных в разделе «Оптимизация доставки CSS»):

Оптимизация PageSpeed ​​- блокировка рендеринга после минимизации CSS

Три оставшихся файла были из каталогов плагинов вне моей темы (которые мы рассмотрим позже):

Оптимизация PageSpeed ​​- CSS-файлы из плагинов

Я надеюсь, что это дает вам ощущение кроличьей норы, которой быстро становится оптимизация WordPress PageSpeed.

Хотя минимизация и объединение CSS, как правило, довольно просты, JavaScript, как правило, часто терпит неудачу, когда вы пытаетесь это сделать, создавая серьезные, разрушающие сайт ошибки.

Интересно, что PageSpeed ​​теперь предлагает полные заархивированные загрузки своих сжатых версий ваших файлов, которые ему не нравятся.

Оптимизация PageSpeed ​​- загрузка оптимизированных файлов

Он перечислил десять моих файлов JS, которые он хотел, чтобы я исправил:

Оптимизация PageSpeed ​​- Загруженные файлы

Для справки, вот больше ресурсов по минимизации Google PageSpeed для HTML, CSS и JS. Я также использовал Refresh SF , который обеспечивает легкий веб-доступ к различным инструментам сжатия.

Сжатие и объединение JavaScript, безусловно, может привести к ошибкам, поэтому мне пришлось действовать шаг за шагом. Используя W3TC JS File Management, я минимизировал и объединил семь файлов JS в теме Construct:

Google PageSpeed ​​- Управление файлами W3TC JS

Это не позволило мне обратиться к JS-файлам моих плагинов или к проблемам, с которыми я столкнулся при загадочном неисчислимом размещенном во внешнем файле base.js. Давайте перейдем к проблемам блокирования рендеринга, а затем вернемся к минификации JS.

Если у вас есть большое количество файлов, которые необходимо загрузить для стилизации (CSS) и активации (JS) функциональности вашей веб-страницы, большинство браузеров будут замедляться после параллельного запроса четырех ресурсов.

Вот пример жалобы на блокировку рендера CSS в PageSpeed:

Google Page Speed ​​- блокировка рендеринга CSS

Хотя W3TC объединил многие из них в свой include.c46b63.css, следующие три выше были из моих плагинов.

Блоггер Джастин Тэдлок предложил несколько советов, объясняющих, как попросить WordPress не загружать файлы CSS, которые мои плагины поставили в очередь для загрузки. Ответ состоит в том, чтобы отменить их регистрацию и затем загрузить объединенный файл самостоятельно.

Вот мой плагин оглавления, ставящий в очередь его файлы JS и CSS:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
/**
* Register and load CSS and javascript files for frontend.
*/
function wp_enqueue_scripts()
{
    $js_vars = array();
     
    // register our CSS and scripts
    wp_register_style( ‘toc-screen’, $this->path . ‘/screen.min.css’, array(), TOC_VERSION );
    wp_register_script( ‘toc-front’, $this->path . ‘/front.min.js’, array(‘jquery’), TOC_VERSION, true );
     
    // enqueue them!
    if ( !$this->options[‘exclude_css’] ) wp_enqueue_style(«toc-screen»);
     
    if ( $this->options[‘smooth_scroll’] ) $js_vars[‘smooth_scroll’] = true;
    wp_enqueue_script( ‘toc-front’ );

Следуя предложению Тэдлока, я перерегистрировал мой плагин, включающий в файл functions.php моей темы, в первую очередь, CSS — вы должны найти ссылки, используемые разработчиком плагина:

1
2
3
4
5
6
7
add_action( ‘wp_print_styles’, ‘my_deregister_styles’, 100 );
 
 function my_deregister_styles() {
     wp_deregister_style( ‘toc-screen’ );
   wp_deregister_style( ‘blogsynthesis_jss_css’ );
   wp_deregister_style( ‘edd-styles’ );
 }

Я вручную создал комбинированные CSS-файлы с этими тремя таблицами стилей плагинов. Затем я попросил W3TC минимизировать и объединить этот файл в свою собственную таблицу мега-стилей:

Google PageSpeed ​​- W3TC Объединить CSS

Здесь существует серьезная проблема, заключающаяся в том, что при обновлении моих плагинов мне может потребоваться обновить этот комбинированный файл CSS и сопровождающие его файлы JS.

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

Используя подход Tadlock, вот как выглядела блокировка рендера PageSpeed:

Оптимизация PageSpeed

Я следовал тем же шагам для файлов JS, только немного более тщательно. Постепенно жалоба JS моего PageSpeed ​​на мой сайт стала довольно незначительной:

Оптимизация PageSpeed ​​- JavaScript Сократить результаты

Однако, как вы можете видеть ниже, он также жаловался на проблемы кеширования браузера с файлами JS, на которые я не смог найти ссылки в моей базе кода, такие как ad_status.js от Doubleclick.

Google PageSpeed ​​- использовать кэширование браузера

Удаление устаревшего YouTube Player Embed

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

Хотя мне было любопытно попробовать небольшое исправление, предложенное здесь, чтобы предотвратить загрузку видео без действий пользователя, я решил просто удалить видео из слайд-шоу моей домашней страницы.

Вероятно, способ, которым моя тема Construct внедрила файлы YouTube, был устаревшим решением. Поддержка YouTube5 в HTML5 может работать намного лучше. Тем не менее, довольно забавно, как сервис Google влияет на оценку производительности другого сервиса Google.

Удаление одной функции на моей домашней странице, которая встраивала видео YouTube, решило несколько проблем:

Оптимизация PageSpeed ​​- хлопотный YouTube на моей домашней странице

Поскольку я не хочу, чтобы вы упустили возможность увидеть мою лучшую половину до того, как WordPress повредил меня, я добавлю сюда видео. Я был хорошим парнем.

Вот что происходит:

  • Размещенный извне файл s.ytimg.com base.js, который он хотел сжать, был создан с помощью этого видео на YouTube.
  • И static.doubleclick.net/instream/ad_status.js был тоже. Потребовалось время, чтобы отследить местоположение этого файла. Помогла консоль разработчика Safari, когда я увидел и base.js, и ad_status.js в кадре YouTube (так глубоко в кроличьей норе улучшения страницы PageSpeed ​​я был теперь, когда Алиса представилась мне):
Оптимизация PageSpeed ​​- Safari Developer Console

После внесения ранее сделанных JS-изменений и удаления видео проблема минимизации JavaScript была решена для моего мастера PageSpeed:

Оптимизация PageSpeed ​​- минимизирован JavaScript

Ошибка кэширования браузера с Doubleclick, показанным ниже, также исчезла.

Теперь мне нужно было только кэшировать gpt.js и ga.js, еще два внешних сервиса Google:

Оптимизация PageSpeed

Это оказалось довольно большим препятствием и потребовало много сложностей, чтобы полностью решить эти проблемы. Лучшее решение — локально разместить копию сценариев Google для Google Analytics и DFP и использовать сценарии cron для их регулярного обновления на вашем сервере. Алисе стало скучно со мной — надеюсь, вы все еще следите за ней.

Я посмотрел другие темы, которые я использую с плагином Google Analytics (в Construct есть настройки для Google Analytics), и они тоже не рассматривали это.

Итак, я сделал локальные копии скриптов для Google Analytics и Google DFP, и вскоре после этого кеширование моего браузера было решено в PageSpeed:

Оптимизация PageSpeed ​​- Локальное использование Google Scripts

Вот еще информация от Google о браузерном кэшировании , опять же очень глубоком техническом ресурсе без особого руководства для администраторов WordPress.

Google может предоставить общие группы своих популярных файлов JavaScript, сведенные к минимуму и объединенные для лучшей поддержки PageSpeed ​​издателей. Это также помогло бы, если бы они не загружали свои файлы индивидуально и неявно в сценариях.

Давайте кратко вернемся к жалобам на размер изображения PageSpeed, прежде чем закончить.

Предложения Google PageSpeed ​​по изображениям на самом деле могут ослабить удобство использования вашего сайта. Вот один из примеров, рекомендуемое изображение, которое я разместил на своей домашней странице.

Для того, чтобы мои сообщения отображались в Facebook с миниатюрным изображением, социальной сети требуется минимальные размеры 200 пикселей с самой короткой стороны. Моя версия 281 x 200 ( показана здесь с небольшой поправкой на требования Tuts + ):

Джефф Рейфман Популярные изображения на домашней странице

И вот версия, предоставленная PageSpeed ​​в архивированной загрузке:

Google Page Speed ​​Рекомендуемое Джефф Рейфман Избранные изображения на главной странице

Вы можете видеть, что качество еще хуже, но, что более важно, PageSpeed ​​хочет, чтобы я сократил изображение до размеров, которые Facebook не принял бы показывать в своих сообщениях.

В конечном итоге я решил покинуть свой сайт с несколькими жалобами на оптимизацию изображений PageSpeed, что снизило мои оценки.

После всей этой работы, где мой сайт оказался?

Окончательные оценки PageSpeed ​​включали Mobile 70, показывая некоторые из оставшихся жалоб ниже:

Оптимизация PageSpeed ​​- финальные результаты Mobile

Вот оставшиеся оптимизации изображения:

Оптимизация PageSpeed ​​- финальные результаты Mobile с проблемами с изображением

И вот краткое изложение всех пройденных правил:

Оптимизация PageSpeed ​​- правила пройденных итогов

Кроме того, вот окончательные результаты UX. Большинство сайтов не имеют больших проблем с ними, поэтому я не обращался к ним сегодня:

Оптимизация PageSpeed

Итоговый счет на рабочем столе составил 86, неплохо:

Google PageSpeed ​​Итоговая оценка на рабочем столе

JavaScript привередлив. Мне никогда не удавалось успешно минимизировать и объединить эти последние два файла в первый. Даже оставлять их без сжатия никогда не получалось. Работать с темами и плагинами сложно. Чтобы решить эту проблему, потребовалось бы несколько дней самоотверженной работы.

Вот его жалобы размера файла изображения:

Google PageSpeed ​​Итоговые жалобы на результаты работы Desktop Desktop

В конечном счете, оптимизация моего PageSpeed ​​заняла много времени и усилий и сделала мой сайт уязвимым для будущих плагинов и обновлений скриптов Google. Большая часть этой работы довольно запутанная, детализированная и отнимающая много времени. Это также немного сводит с ума и ошеломляет. Спасибо Google.

PageSpeed ​​это еще не все. Содержание тоже имеет значение. Вот несколько известных сайтов и их PageSpeed. Результаты вас удивят.

Daring Fireball (DF) — один из самых быстрых блогов, ориентированных на контент. Это продвигает рекламодателей в минимальной форме. Страницы бегут легко и быстро. CMS Gruber является настроенной версией Movable Type. Результаты немного лучше, чем на моем сайте. DF также генерирует тонны дохода с минимальной рекламой.

Дерзкий огненный шар PageSpeed

Очевидно крупная новостная организация, у них ужасные оценки PageSpeed:

Скорость страницы для New York Times

Поразительно, но наша местная тряпка с ее ужасной рекламой и моделью отказов подписки намного хуже:

Google PageSpeed ​​- The Seattle Times

Популярный сайт электронной коммерции, B & H Photo , имеет ужасную мобильную оценку и оценку на рабочем столе чуть ниже моей:

PageSpeed ​​BH Photo

Возможно, вы слышали об этой компании в моем недавнем эссе « Как отличить сайты WordPress от географии — они продают много вещей в Интернете». Мои оценки PageSpeed ​​значительно выше их:

PageSpeed ​​Amazon

В будущем я рассмотрю еще несколько улучшений, чтобы улучшить PageSpeed ​​моего сайта:

  • Переход на новую тему WordPress. Прежде всего, я ищу более чистый, высокопроизводительный и отзывчивый дизайн с быстрой PageSpeeds.
  • Обновление моего сервера до PHP7. Обновление обещает почти двукратное улучшение производительности. Это не просто обновить до выпуска Ubuntu в комплекте, но это не так уж сложно.
  • Обновление моего сервера до Varnish4. Обновление требует доработки конфигурационных файлов, и я не уверен в его совместимости с W3 Total Cache, но я готов попробовать.
  • Просмотрите мою PageSpeed ​​на всех страницах моего сайта, а не только на главной странице.

Если я не перенесу темы в ближайшее время, мне нужно будет внедрить этот скрипт cron для синхронизации моих собственных скриптов Google для Analytics и DFP и выяснить, как отслеживать обновления плагинов для изменений JS и CSS. Честно говоря, мне, возможно, придется вернуть эти специфические достижения PageSpeed.

Если у вас есть вопросы, пожалуйста, напишите их ниже. Или вы можете связаться со мной в Twitter @reifman . Пожалуйста, проверьте мою страницу инструктора Envato Tuts +, чтобы увидеть другие учебники, которые я написал, такие как моя серия стартапов ( Создание вашего стартапа с помощью PHP ).