Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

PageSpeed Insights Удалите код JavaScript и CSS, блокирующий отображение верхней части страницы


Recommended Posts

Всем привет борюсь с PageSpeed Insights, а именно 

Удалите код JavaScript и CSS, блокирующий отображение верхней части страницы
java переместил следующим образом в response.php

public function output() {
    if ($this->output) {
        #start
        $_regex_scripts = '/<script[^>]*>(.*?)<\/script>/s';
        $_regex_paste_position = '/<\/body>/';

        preg_match_all($_regex_scripts, $this->output, $all_scripts, PREG_SET_ORDER);
        $this->output = preg_replace($_regex_scripts, '', $this->output);

        $scripts = '</body>';
        foreach ($all_scripts as $key => $value) {
            $scripts .= $value[0].PHP_EOL;
        }
        $this->output = preg_replace($_regex_paste_position, $scripts, $this->output);
        #end
        if ($this->level) {
            $output = $this->compress($this->output, $this->level);
        } else {
            $output = $this->output;
        }

        if (!headers_sent()) {
            foreach ($this->headers as $header) {
                header($header, true);
            }
        }

        echo $output;
    }

Знатки как сделать тоже с css? 
Решение с java нашел на просторах интернета

  • +1 1
Надіслати
Поділитися на інших сайтах


За такое пороть надо! В response!

<?php $pagespeed = isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Page Speed') !== false) ? true : false; ?>

<?php if(!$pagespeed) {

мильён условий

}?>

/ * это грязный хак, не имеющий ничего общего с настоящей оптимизацией *'/

Может быть, я в коде полное дно, но работает и других решений не нашел

Надіслати
Поділитися на інших сайтах


Всем привет борюсь с PageSpeed Insights,

Зачем ?

Никак на поисковую выдачу его попугаи не влияют (только один пункт - мобильное удобство и то только в мобильной выдаче)

 

Может быть, я в коде полное дно, но работает и других решений не нашел

Пока "работает", до первых "г... модулей"

Код перемещенные вниз - будет негативно влиять на стабильность.

В opencart практически невозможно сделать стабильный код для PS, рано или поздно попадется какой нибудь гмодуль или гтема у которой сделано НЕ по стандартам

Надіслати
Поділитися на інших сайтах

Дело в том, что этого способа недостаточно, скорее всего у вас еще и хостер модифицирует скрипты.

Если это хостер, то возможно в панели хостера есть галочка - объединить css.

Надіслати
Поділитися на інших сайтах

Товар добавляется? Оформляются заказы ?

Да заказы оформляются, фильтра работают, я добавил этот код где то неделю назад сбоев после этого не обнаружил

Надіслати
Поділитися на інших сайтах


Дело в том, что этого способа недостаточно, скорее всего у вас еще и хостер модифицирует скрипты.

Если это хостер, то возможно в панели хостера есть галочка - объединить css.

Да на хостинге есть это все 

Надіслати
Поділитися на інших сайтах


Можно в контролер футера запихнуть

$data['styles'] = $this->document->getStyles();

и вывести стили темы + этот массив стилей в футере

естественно в шапке все закоментить

но это врядли поможет

 

Лучше всего скомпилить свой бутстрап и выкинуть кучу лишних стилей.

Надіслати
Поділитися на інших сайтах

В магазине у вас все работает? Имелось ввиду.

А почему бы не работать?

 

Он собирает ВСЮ Коллекцию

 

<script></script>

И точно также ее сносит в футер.

 

 

Но вот  интересно, если нет у блока </body>

 

Вот тут и сломается.

Надіслати
Поділитися на інших сайтах

...

 

Вот тут и сломается.

 

И есть подводные камни в стиле

document.write('<script src="' + url + '"><\/script>');
Надіслати
Поділитися на інших сайтах

А теперь на всю эту оптимизацию ПОЛОЖИТЬ член

раз!

preg_match_all($_regex_scripts, $this->output, $all_scripts, PREG_SET_ORDER);

два!

$this->output = preg_replace($_regex_scripts, '', $this->output);

три!

$this->output = preg_replace($_regex_paste_position, $scripts, $this->output);

 

Проверьте время

 

 

#start

$time_start = microtime(true);

#end

$time_end = microtime(true);

$time = $time_end - $time_start;

$this->output .=  sprintf ("%05.5f %s", $time);

Надіслати
Поділитися на інших сайтах

Плюс грабли будут (будут не в том месте) с:

Яндекс картами и виджетами Yandex

Разного рода виджетами VK

и т.п. скриптами

 

Так что ТС - так как вы сделали (в тупую) нельзя делать

Надіслати
Поділитися на інших сайтах

Неа, не работает  :-)

http://take.ms/w0TmA

Работает, работает :)

Это я PS "забодал" - он из своего кеша берет уже данные (причем левые какие то).

Возьми другую страницу у товаров или категорий

Единственное не понятно почему ругается на boostrap.min.css - хотя он внизу

 

6438954413.png

Надіслати
Поділитися на інших сайтах

Значит PS в своих алгоритмах что-то поменял. Раньше такой способ не работал, по крайней мере зеленого цвета на вкладке "для мобильных" не выдавал

Тем лучше  :-)

Надіслати
Поділитися на інших сайтах

Значит PS в своих алгоритмах что-то поменял. Раньше такой способ не работал, по крайней мере зеленого цвета на вкладке "для мобильных" не выдавал

Тем лучше  :-)

Всё понял - PS не любит подгрузку ajax (у меня баннер подгружался через ajax)

Убрал

Сразу  +10

И уже не ругается на css и js "в начале"

 

4749433652.png

Надіслати
Поділитися на інших сайтах

А где этот модуль можно взять?) Свои костыли буду убирать... 

Готовится к продаже давно уже

День, два подождите еще

Надіслати
Поділитися на інших сайтах

Ох и PageSpeed ..

Не, я конечно все понимаю, но ругаться на 0.24 секунды ответа сервера (TTFB) - это уже перебор :ugeek:

7676730865.png

 

Это сколько же нужно ?! 0.0... ?

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.