Добрый день! Сайт sfera.by Подскажите, как разобраться с проблемой. Google PageSpeed пишет: "Удалите из верхней части страницы код JavaScript и CSS, блокирующий отображение Количество блокирующих скриптов на странице: 7. Количество блокирующих ресурсов CSS на странице: 3. Они замедляют отображение контента. Все содержание верхней части страницы отображается только после загрузки указанных далее ресурсов. Попробуйте отложить загрузку этих ресурсов, загружать их асинхронно или встроить их самые важные компоненты непосредственно в код HTML." Помогите это сделать, пожалуйста!
Добрый день! Попробуйте загружать их асинхронно. В файле header.tpl находите скрипты и дописывайте параметр "async". К примеру: <script async type="text/javascript" src="catalog/view/javascript/jquery/jquery-1.7.1.min.js"></script> Пробуйте по одному, отслеживайте результаты, чтобы прибавка скорости загрузки не досталась ценой проблем с правильным отображением контента и срабатыванием скриптов на сайте.
Можно попробовать скачать эти скрипты себе на хостинг и вызывать их не со стороннего сайта, а у себя.
Пробую - перестают работать скрипты. --- Добавлено, 26 мар 2015 --- Они итак на хостинге кроме двух гугловских. Я вместо гугла на сайте их подключил - ещё медленнее стали страницы грузиться.
Возможно, они подгружают ещё скрипты откуда-нибудь - посмотрите их код на наличие строк типа require(".........."); И что говорит firebug (FireFox) или отладчик в Chrome (вкладка Network)? Там время загрузки всех элементов страницы весьма наглядно показано.
five555, 87 из 100 норм показатель. Почему написали 7 джс и 3 цсс, их там намного больше: Количество блокирующих скриптов на странице: 23. Количество блокирующих ресурсов CSS на странице: 13.
Тогда было включено объединение и сжатие скриптов и CSS. Потом я отключил эту функцию. Скриптов и CSS стало естественно больше, но сайт стал быстрее загружаться в Pingdom Website Speed Test.
Даже чистейший сайт, гугл будет рекомендовать оптимизировать и самое оптимизированное изображение предложит ещё маленько сжать.
Я уже это понял. просто пытаюсь понять причину выдачи страниц в гугле в скрытых результатах. Вроде всё норм по сео. Решил разобраться с скоростью загрузки страниц. Больше ничего придумать не могу.
five555, скорость загрузки может быть и не при чем, смотрите в сторону одинаковых тайтлов/текста на страницах, есть ли какие-то ошибки гугл вебмастерс?. Ну а вообще в сети очень много инфы про сопли гугла.
У меня была подобная проблема. Долго мучилась, спрашивала на форумах, выполняла предложенные советы. А потом мне подсказали посмотреть в торону хостеров. Я правда не сразу добилась от них результата, они мне про скрипты и оптимизацию рассказывали... Но мое упорство с расписыванием им что и как я сделала и ничего не изменилось дало свой результат. Гугл мне показывал до 4,5, а после вмешательства хостеров 0,68.
Рекомендую переместить скрипты в подвал сайта, а стили объединить. Для перемещения скриптов вместе со всеми inline скриптами можете использовать вот этот код для класса 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; }} Он ищет в ответе все скрипты (включая inline инклуды и функциональные, встроенные в страницу) затем вырезает их, находит окончание HTML тела и после него вставляет все то, что вырезал. Это модифицированный для вас код из моего модуля MCJ. Однако нет проверки IF DEF
Заменить функцию output к файле system/library/response.php. Рекомендую сделать бекап файла перед применением.
Сделал, вроде всё получилось. Есть два вопроса: 1. "Однако нет проверки IF DEF" - это плохо или хорошо и чем чревато? 2. Я раньше объединял CSS и скрипты с помощью модуля "Increase Page Speed", но при этом скорость загрузки сайта уменьшалась в разы (опираясь на данные Pingdom Website Speed Test). Стоит ли объединять CSS сейчас?
1. Объявление стилей и скриптов IF DEF есть почти во всех шаблонах. Это проверка для браузера. Например, Код: <!--[if lt IE 7]> <style rel="stylesheet" href="catalog/view/stylesheet/internet_explorer.css" /> <![endif]--> С помощью таких условных комментариев можно сказать браузеру, что если браузер IE 7, то нужно загрузить стиль или скрипт. Если в таком комментарии загружается скрипт, то он будет из него вырезан и перемещен в подвал сайта вместе с остальными. Сами понимаете чем это черевато. 2. ХЗ, попробуйте мой бесплатный модуль MCLite для сжатия стилей. Работает очень быстро, много минимизаторов, на выбор, куча настроек. MCJ от MCLite отличается лишь тем, что умеет сжимать скрипты, сжимает криво, подойдет не всем. Сразу скажу, что платный MCJ лучше не стоит покупать. Вот так потихоньку делаю MCJ бесплатным, только по частям т.к. деньги тоже нужны.
После этих изменений перестала работать кнопка оформления заказа. Работает только если перезагрузить страницу. Подскажите, есть ли решение этой проблемы?