Усуньте JavaScript та CSS, що блокують візуалізацію, у верхньому вмісті


30

Я будую сайт Drupal 7. Це деякі з модулів, які я використовую: Adaptivetheme (тема), Панелі перегляду та вмісту, Панелі, Міні панелі, Панелі скрізь, Менеджер сторінок, Superfish для меню, Addthis, Chosen (випадає).

Для підвищення продуктивності мого сайту та роботи з файлами CSS та JS я використовую модуль Advagg .

Під час запуску тесту Pagespeed Google у мене з’являється така помилка як «Поправити»:

Усуньте блокування JavaScript та CSS, що блокує візуалізацію, у верхній частині
вмісту На вашій сторінці є 6 блокуючих ресурсів сценарію та 8 блокуючих ресурсів CSS. Це спричиняє затримку візуалізації вашої сторінки.
Жоден із наведених вище вмістів на вашій сторінці не може бути відображений, не чекаючи завантаження наступних ресурсів. Спробуйте відкласти або асинхронно завантажити блокирующие ресурси або вбудувати критичні частини цих ресурсів безпосередньо в HTML.

Це інформація, яку постачає Google:

Чи є спосіб змінити параметри модуля Advagg або ядра Drupal і вирішити цю проблему?

Чи є інший спосіб досягти цієї мети?

Оновлення - після впровадження змін відповідно до відповіді mikeytown2 я отримав таке повідомлення в тесті Pagespeed Google:

Усуньте блокування JavaScript і CSS, що блокує візуалізацію, у верхньому контенті На
вашій сторінці є 6 блокуючих ресурсів сценарію та 4 блокування ресурсів CSS. Це спричиняє затримку візуалізації вашої сторінки.
Жоден із наведених вище вмістів на вашій сторінці не може бути відображений, не чекаючи завантаження наступних ресурсів. Спробуйте відкласти або асинхронно завантажити блокирующие ресурси або вбудувати критичні частини цих ресурсів безпосередньо в HTML.


Не впевнений у прогресі, але для основної програми це не передбачає таких налаштувань. Для адгеґу я їх не побачив, але все одно я перестав його використовувати. Можливо, зараз є такі налаштування. Особисто я опублікував запит на підтримку у черзі випусків, запитавши про це, і якщо обслуговуючий персонал скаже, що вони недоступні, змінив би запит на функцію.
Молот

Ваше запитання занадто широке. Ваш сайт використовує CSS та JS - так само, як і кожен інший сайт в Інтернеті. Доки зберігається порядок каскаду CSS, є мало причин, щоб ви не змогли об'єднати всі свої CSS в 1 файл. Поки ваш JS інкапсульований нормально, немає ніяких причин його неможливо об'єднати в 1 файл (як крайній приклад). Якщо ви можете надати детальну інформацію про те, які файли / ресурси CSS та JS потрібні цій сторінці; ви можете отримати більш усвідомлені відповіді.
tenken

@tenken, як це занадто широко? У нього CSS та JS пов'язані блокуванням візуалізації, і він хоче їх не блокувати. Ці способи в значній мірі пояснені ( Google, наприклад, як ОП посилається на рекомендації Google Pagespeed). Ваш коментар не має нічого спільного з проблемою, про яку задається ОП.
Молот

всі пов'язані файли css та js блокують, за винятком того, що їх вбудований код або використання, asyncяке не підтримується старими браузерами. Наприклад, агрегація Drupal за замовчуванням включає <link>теги для всіх ваших css. Якщо ваш веб-сайт CSS або JS занадто складний, у вас завжди буде ця проблема. Якщо ви правильно створили свій сайт, ви можете безпечно агрегувати файли. Без інформації про залежність від файлів, деталі запитань занадто широкі - модуль ніколи не може виправити свою проблему; це все про те, як написано CSS та JS, їх порядок та складність включення. він ніколи не говорив, що хоче блокувати, якщо ви вважаєте, що він хоче.
tenken

@tenken Я оновив своє запитання та надав більше інформації щодо модулів - сподіваюся, що допоможе зрозуміти, які CSS та JS я використовую.
EB84

Відповіді:


42

У README є посібник, як це зробити за допомогою поточної версії AdvAgg 7.x-2.31 + . Також дивіться цю сторінку вікі в групі «Висока ефективність» . Більшість сайтів можуть досягти ідеального 100/100 балів на https://developers.google.com/speed/pagespeed/insights/ . Нижче наведено вказівки, як досягти цього для встановлення AdvAgg.

Не забудьте перевірити сайт після кожного розділу, щоб переконатися, що зміни не зіпсували ваш сайт. Зміни в AdvAgg Modifier, як правило, найбільш проблемні, але вони пропонують найбільші вдосконалення.

Розширена агрегація CSS / JS

Йти до admin/config/development/performance/advagg

  • Виберіть "Використовувати рекомендовані (оптимізовані) налаштування"
AdvAgg Compress Javascript

Встановіть AdvAgg Compress Javascript, якщо він не включений, і перейдіть до admin/config/development/performance/advagg/js-compress

  • Виберіть JSMin, якщо такий є; в іншому випадку виберіть JSMin +
  • Виберіть Стріп все (найменші файли)
  • Клацніть посилання пакетного стиснення, щоб обробити ці файли
Навантажувач шрифтів AdvAgg Async

Встановіть AdvAgg Async Loader Font, якщо він не включений, і перейдіть до admin/config/development/performance/advagg/font

  • Виберіть Локальний файл, включений у сукупність (версія: XXX). Якщо ця опція недоступна, дотримуйтесь вказівок, розташованих нижче під опціями, як її встановити.
  • Поставте прапорець "Використовуйте localStorage, щоб спалах нестирного тексту (FOUT) відбувся лише один раз."
  • Поставте прапорець "Встановити файл cookie, щоб спалах нестиркого тексту (FOUT) відбувся лише один раз."
AdvAgg Bundler

Встановіть AdvAgg Bundler, якщо його не включено, і перейдіть до admin/config/development/performance/advagg/bundler

Налаштування HTTP / 2.0

  • У розділі "Цільова кількість пакетів CSS на сторінку" виберіть 25
  • У розділі "Цільова кількість пакетів JS на сторінку" виберіть 25
  • У розділі "Логіка групування" виберіть "Розмір файлу"

Налаштування HTTP / 1.1 (за замовчуванням)

  • У розділі "Цільова кількість пакетів CSS на сторінку" виберіть 2
  • У розділі "Цільова кількість пакетів JS на сторінку" виберіть 5
  • У розділі "Логіка групування" виберіть "Розмір файлу"

25 пакетів порівняно з 2 та 5 стосується кешування браузера. Більше файлів дорівнює кращому шансу браузера мати комбо в кеші, але більше файлів означає, що більше HTTP 1.1 буде встановлено та відкрито більше. Використовуйте 2 для CSS, оскільки цей номер не чекає нових підключень; JS - 5, оскільки у більшості браузерів встановлено обмеження одночасного з'єднання 6. Це число для пакетів було вибрано після багатьох тестів. У HTTP 2.0 є одне потокове з'єднання, і штраф за декілька файлів CSS та JS майже не існує; таким чином оптимізація кешу браузера - найкращий вибір; таким чином, 25 слід використовувати для CSS та JS під час обслуговування HTTP / 2.0.

Перемістити AdvAgg

Встановити AdvAgg Relocate, якщо його не включено, і перейти до admin/config/development/performance/advagg/relocate

  • Виберіть "Використовувати рекомендовані (оптимізовані) налаштування"
Модифікатор AdvAgg

Встановіть модифікатор AdvAgg, якщо його не включено, і перейдіть до admin/config/development/performance/advagg/mod

  • Виберіть "Використовувати рекомендовані (оптимізовані) налаштування"
Створення критичних CSS-файлів

Перейдіть на сторінку https://www.sitelocity.com/critical-path-css-generator та введіть стільки цільових сторінок, скільки потрібно для критичного css; Топ-10, як правило, хороший старт. Якщо у вас є Google Analytics, це покаже вам, як знайти головні цільові сторінки https://developers.google.com/analytics/devguides/reporting/core/v3/common-queries#top-landing-pages або для Piwik https: //piwik.org/faq/how-to/faq_160/ . Якщо ви не знаєте, з якої сторінки почати, зробіть домашню сторінку свого сайту. Ви також можете нам це створити css https://chrome.google.com/webstore/detail/critical-style-snapshot/gkoeffcejdhhojognlonafnijfkcepob?hl=uk

Приклади назви файлів і шляхів нижче для теми "завантажувальна програма"; всі вони починаються з sites/all/themes/bootstrap/critical-css/; у вашій темі створіть critical-css/каталог. Наступний каталог базується на користувачеві; anonymous/, all/або authenticated/може бути використаний.

Наступним каталогом може бути urls/або type/. Дивлячись на urls/; спереду - особливий випадок для титульної сторінки, всі інші шляхи використовують current_path () як каталог та ім'я файлу з .cssдоданими до кінця; Дивіться https://api.drupal.org/api/drupal/includes%21path.inc/function/current_path/7.x

Дивлячись на type/це, це особливий випадок для типів вузлів. Скористайтеся назвою машини та додайте .cssїї до кінця. Будь-який вузол цього типу буде застосований та вбудований цей критичний файл css. Нижче наведено кілька прикладів, що показують, як це працює.

дійсні приклади розташування файлів для "передньої" сторінки: sites/all/themes/bootstrap/critical-css/anonymous/urls/front.css

дійсні приклади розташування файлів для сторінки "node / 1" current_path (): sites/all/themes/bootstrap/critical-css/anonymous/urls/node/1.css

дійсні приклади файлових файлів для типу вузла "сторінки": sites/all/themes/bootstrap/critical-css/anonymous/type/page.css

Якщо ви хочете отримати якийсь автоматизований спосіб генерування цих файлів css, у Fourkitchens є чудова стаття про те, як це налаштувати: https://fourword.fourkitchens.com/article/use-grunt-and-advagg-inline-critical-css -друкарська-7-тема


Це чудовий огляд використання AdvAgg! Спасибі. Можливо, цей текст може стати початком пов’язаної сторінки "документації" для вашої сторінки проекту :)
tenken


@ mikeytown2 дякую за чудову відповідь. Я впровадив усі зміни та оновив питання. Я отримав трохи більшу оцінку - дякую!
EB84

З огляду на вихідний результат видно, що ви не позначили всі поля в розділі Оптимізація замовлення JavaScript на advagg/modсторінці І / АБО ви не перемістили Усі JS у колонтитул. Також якщо я міг побачити на сторінках повне джерело, яке, як правило, допомагає з рекомендаціями (просто посилання на ваш сайт).
mikeytown2

Дякуємо, що надали цю інформацію. Якщо ви хочете менше файлів css на сторінці, перейдіть до адгег / bundler і змініть значення css з 4 вниз до 1. Це дасть вам кращу оцінку, але врахуйте коментарі, які я зробив вище щодо цього. Схоже, що адаптивна тема використовує drupal_add_html_head () для додавання до браузера умовних js, мені потрібно перевірити, що відбувається; означає, що більше 1 теми потребує drupal.org/node/2217451 . Крім того, я створив це питання для вирішення надають блокуючу Css drupal.org/node/2223267
mikeytown2

2

Ви ніколи не отримаєте по-справжньому високих балів за допомогою попередньо вбудованих модулів друпалу, єдиний спосіб досягти цього - відвідавши та ретельно проаналізувавши всі пропозиції, зроблені інструментом швидкість Google , звертаючись до кожного з них незалежно.

Деякі речі, які я зробив, щоб досягти 95 на дуже активному сайті новин , який до того моменту, як я це писав, набрав кращий результат, ніж nytimes (зараз це не так):

  • [блокування сценаріїв] Затримка виконання сторонніх скриптів, таких як sharethis, віджети facebook, google plus тощо, для запуску лише після повного відтворення сторінки. Це вимагало декількох простих замін рядків на виході html.tpl.php, щоб схопити ці сценарії та поставити їх у чергу для подальшого виконання.
  • [блокування сценаріїв] Збережіть змінну $ script у складі html.tpl.php (з json_encode) у змінній javascript, щоб поставити їх у чергу після запуску після завантаження першої сторінки. Це неприродно, але необхідно. Деякі проблеми, пов’язані з веб-переглядачем, потрібно було розібрати
  • [блокування css] Реалізовано щось подібне до методики Кіта Кларка , але з rel = "prefetch". Це вводить необхідність вирішення FOUC .
  • [Мінімізація та стискання] Екстерналізація стиснення та мінімізації на сервер розподілу, де я можу використовувати Imagemagic, yui-компресор, pngoptim та інші речі для подолання цих правил, не перетворюючи інсталяцію drupal в некерований безлад.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.