Форум русской поддержки Joomla!® CMS
26.02.2017, 07:21:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Joomla - марафон. Сайт на миллион
Страниц: 1 2 3 4 [5] 6   Вниз
  Добавить закладку  |  Печать  
Автор

[FAQ] Ускоряем загрузку сайта (скриптов MooTools, jQuery)

 (Прочитано 71055 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Fedor Vlasenko
Профи
********

Репутация: +698/-5
Offline Offline

Пол: Мужской
Сообщений: 3824


Все начинается с Value


« : 19.01.2012, 04:05:32 »

Уважаемые форумчане! Для ускорения загрузки Ваших сайтов предлагаю рассмотреть данное решение.
Поисковые системы Google и Yandex предлагаюют нам загружать такие библиотеки как  MooTools, jQuery идр. с своих серверов.
Документация Yandex
Документация Google
Основные преимущества
  • обходится лимит на ограничение количества запросов к одному хосту, скрипты загружаются параллельно с другими элементами сайта, что ускоряет загрузку
  • обновляться до новой версии библиотеки (или откатываться к старой в случае необходимости): достаточно указать номер нужной версии
  • если пользователь до этого побывал на каком-то сайте, который использует эту же библиотеку, то она уже будет у него в кеше, т.е. экономится траффик как сервера, так и пользователя
Вот пример сжатия:
https://ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools-yui-compressed.js   21 кб (86 кб без сжатия)
http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js   21 кб (70 кб без сжатия)
Загружаем Mootools предварительно отключив скрипт сайта. Вставляем нижеприведенный код в шаблон сайта (index.php) перед <head>
Код:
<?php
unset($this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
$this->_scripts[$this->baseurl.'/media/system/js/core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/caption.js']);
$this->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js');
?>
1.4.2 в примере номер версии //Joomla 2.5
Так можно удалить подгрузку скриптов joomla
Показать текстовый блок
Загружаем jquery
Код:
<?php
defined('_JEXEC') or die;
$document = JFactory::getDocument();
$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'); ?>
P.S.Прошу Вас обращать внимание при создании сайта и учитывать основные библиотеки которые вы хотите использовать. В основном это Mootools и Jquery, старайтесь использовать одну из них, и тем более не загружать множество версий этих библиотек .
Плагин отключает все скрипты Mootools в Joomla 3 и 2.5
« Последнее редактирование: 21.12.2013, 05:26:24 от Fedor Vlasenko » Записан
 
Fedor Vlasenko
Профи
********

Репутация: +698/-5
Offline Offline

Пол: Мужской
Сообщений: 3824


Все начинается с Value


« Ответ #121 : 15.06.2013, 13:50:35 »

все зависит от модулей и компонентов которые вы используете.
1. Это используйте кеширование
2. Оптимизируйте структуру сайта.
3. Не используйте случайные материалы.
4. Выводите по 5-10 материалов на странице.
5. Включите отладку в общих настройках сайта. Оптимизируйте ваши запросы. От медленных избавляйтесь. Заменяя другими источниками вывода.
Записан
frag79
Завсегдатай
*****

Репутация: +61/-0
Offline Offline

Пол: Мужской
Сообщений: 597


« Ответ #122 : 19.08.2013, 18:30:45 »

Вот начало шаблона, каким я его использую вот уже год на различных проектах и, практически, без изменений. Ни разу ни одной ошибки естессно.
Код
<?php defined('_JEXEC') or die;
if (JRequest::getVar('ajcom')) {?>

<jdoc:include type="component" />
<?php } else {
unset( $this->
_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
$this->_scripts[$this->baseurl.'/media/system/js/core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/caption.js'],
$this->_scripts[$this->baseurl.'/media/system/js/validate.js']
);
$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);
$templ = $this->baseurl."/templates/".$this->template;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<head>
<jdoc:include type="head" />
...

Спасибо +1, только скобки одной } нехватает.

А зачем если не секрет проверка if (JRequest::getVar('ajcom'))
Записан
alex-143390
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 96


« Ответ #123 : 26.08.2013, 02:19:14 »

Подскажите способ оптимизации.

Вроде сделал всё правильно. Вставил в index.php

Показать текстовый блок

Сайт всё равно грузится долго. Сканирвоал сайт. Вот такая инфа.
Page size
1.8MB
Load time
1.61s
Requests
91
Perf. grade
75/100

Хоть напсиано, что загрузка 1,61 секунды- страница долго грузится (около минуты) и всё это время белый экран, что-то подкгружает. Никак не могу найти что.
http://teatr-skazki.ru/
Записан
fastneed
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #124 : 26.08.2013, 14:55:43 »

не заметил у вас проблем с загрузкой
Цитировать
The components are split over more than 4 domains
возможно что-то где-то лежало.
Записан
alex-143390
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 96


« Ответ #125 : 26.08.2013, 14:57:59 »

не заметил у вас проблем с загрузкой возможно что-то где-то лежало.
Сейчас отключил на время модуль меню Accordion Menu - Offlajn.com
Может дело в нём?
Записан
alex-143390
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 96


« Ответ #126 : 26.08.2013, 14:59:24 »

Дело в том, что ранее я нашел в этом модуле скрытие ссылки - удалил их .... Но думаю может где-то осталось что-то, что постоянно грузил. У этого модуля есть js.
При загрузке пишет, что это кеш - весит порядка 80 кб
Записан
olejenya
Давно я тут
****

Репутация: +3/-0
Offline Offline

Сообщений: 218


« Ответ #127 : 26.08.2013, 19:50:01 »

А можно написать такой плагин, который бы вырезал мне нужные джс и вставлял их в позицию перед закрывающим тегом </body> и при этом еще обьединить в один файл и как то оптимизировать?Так как это делают некоторые плагины по объединению джс. Они просто по умолчанию объединяют все.А мне надо конкретные файлы.Если можно то кто согласиться?
Записан
Dimrix
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #128 : 09.09.2013, 00:21:25 »

Есть шаблон:
http://demo.hotjoomlatemplates.com/index.php?template=vortex
В нем используется jQuery. Так вот проблема в том, что когда я устанавливаю хоть демку хоть "помодульно" карусель работает неадекватно, а именно: когда кликаешь по иконке прокрутка в центр иконки не происходит, хотя на сайте разработчика становится активной иконка по которой был клик. Перебрал кучу параметров пробовал разные комбинации - у меня так не происходит + в Opera некорректно отображается а у разработчика с демкой опять же все ок. Может быть это из-за jQuery? !
Записан
artprog
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #129 : 14.10.2013, 14:15:11 »

Установил плагин JB Library.
Плагин имеет много полезных настроек по отключению/подключению js библиотек, но:
он собирает весь js код и переносит его либо в head либо в подвал страницы (в зависимости от настройки).
А у меня в середине страницы есть карта yandex:
Код:
<script type="text/javascript" charset="utf-8" src="//api-maps.yandex.ru/services/constructor/1.0/js/?sid=E5tSmIcqaBa_bmIdc-nXptZ2lgQaYRRG&width=750&height=450"></script>

И этот код он тоже перемещает в head, в результате карта у меня отображается либо в подвале, либо не отображается вообще. Как можно настроить вывод этого js скрипта на конкретный div ?
Записан
Fedor Vlasenko
Профи
********

Репутация: +698/-5
Offline Offline

Пол: Мужской
Сообщений: 3824


Все начинается с Value


« Ответ #130 : 14.10.2013, 15:34:24 »

artprog какое отношение это имеет к данному топику. Создайте отдельную тему. Карта сайта в Яндексе привязывается не к расположению скрипта, а к определенному <div>
Записан
twister2013
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 92



« Ответ #131 : 28.10.2014, 11:14:20 »

С помощью плагина перенес js-скрипты в подвал, и они не работают после этого. Пробовал вовсе их убирать (так же с помощью плагина) и подключать  руками внизу и тоже самое.
Не знаю как решить эту проблему( Буду рад любым предложениям.
Записан
Fedor Vlasenko
Профи
********

Репутация: +698/-5
Offline Offline

Пол: Мужской
Сообщений: 3824


Все начинается с Value


« Ответ #132 : 28.10.2014, 13:06:17 »

С помощью плагина перенес js-скрипты в подвал, и они не работают после этого.
Жмем F12 и смотрим в консоли ошибки
Записан
twister2013
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 92



« Ответ #133 : 28.10.2014, 13:36:13 »

Проблема решилась подключением библиотеки jquery
« Последнее редактирование: 01.11.2014, 11:35:13 от twister2013 » Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #134 : 21.11.2015, 02:56:39 »

Почему может в шаблоне не работать
Показать текстовый блок
unset не работает категорически, в какое место шаблона его не поставь...
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 666


« Ответ #135 : 21.11.2015, 11:17:35 »

Почему может в шаблоне не работать
Показать текстовый блок
unset не работает категорически, в какое место шаблона его не поставь...
а без $this->baseurl.
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #136 : 21.11.2015, 14:18:37 »

И без $this->baseurl., т.е. если просто написать ссылку типа http://site.ru/media/system/js/mootools-core.js, тоже не удаляет.

Шаблона два, на десктопную и мобильную версию, и некоторые JS хочу убрать в одной версии, а другие в другой. А оно не убирает и все ((
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 666


« Ответ #137 : 21.11.2015, 14:20:58 »

И без $this->baseurl., т.е. если просто написать ссылку типа http://site.ru/media/system/js/mootools-core.js, тоже не удаляет.

Шаблона два, на десктопную и мобильную версию, и некоторые JS хочу убрать в одной версии, а другие в другой. А оно не убирает и все ((
$this->baseurl.'/media/system/js/mootools-more.js' === 'http://site.ru/media/system/js/mootools-core.js'
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #138 : 21.11.2015, 14:26:07 »

Я не понял, что Вы имеете в виду и что нужно сделать =)
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 666


« Ответ #139 : 21.11.2015, 14:34:08 »

Я не понял, что Вы имеете в виду и что нужно сделать =)
а без $this->baseurl.
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #140 : 21.11.2015, 14:45:19 »

Да, и так тоже подставлялось и не удалялось.
Код:
$this->baseurl.'/media/system/js/mootools-more.js' === 'http://site.ru/media/system/js/mootools-core.js'
Записан
robert
Профи
********

Репутация: +359/-13
Offline Offline

Пол: Мужской
Сообщений: 3760


« Ответ #141 : 21.11.2015, 14:48:34 »

О боже, зачем вы копируете каждую букву? jurassik хотел, чтобы вы просто убрали $this->baseurl:
Код
<?php
unset($this->_scripts['/media/system/js/mootools-core.js'],
  $this->_scripts['/media/system/js/mootools-more.js'],
  $this->_scripts['/media/system/js/core.js'],
  $this->_scripts['/media/system/js/caption.js']);
$this->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js');
?>
 
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #142 : 21.11.2015, 14:54:54 »

Я не копировал. И да, варианты
$this->baseurl.'/media/system/js/mootools-more.js'
'http://site.ru/media/system/js/mootools-core.js'
'/media/system/js/mootools-core.js'
Все не работаю, скрипт подгружается.
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 666


« Ответ #143 : 21.11.2015, 14:57:26 »

а что выдает
Код:
print_r($this->_scripts)
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #144 : 21.11.2015, 14:58:31 »

Цитировать
print_r($this->_scripts)
Ничего не выдает вообще. Пусто.
« Последнее редактирование: 21.11.2015, 15:02:34 от Gerostrat » Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 666


« Ответ #145 : 21.11.2015, 15:05:00 »

Ничего не выдает вообще. Пусто.
если это так то и нечего удалять unset(), значит скрипты выводит другой массив см print_r($this)
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #146 : 21.11.2015, 15:10:07 »

Вот что-то такое выдает.
Код:
[document] => JDocumentHTML Object
                                (
                                    ТУТ ВСЯКОЕ-РАЗНОЕ

                                    [_scripts] => Array
                                        (
                                            [/components/com_jcomments/js/jcomments-v2.3.js?v=12] => Array
                                                (
                                                    [mime] => text/javascript
                                                    [defer] =>
                                                    [async] =>
                                                )

                                            [/components/com_jcomments/libraries/joomlatune/ajax.js?v=4] => Array
                                                (
                                                    [mime] => text/javascript
                                                    [defer] =>
                                                    [async] =>
                                                )

                                            [https://ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools-yui-compressed.js] => Array
                                                (
                                                    [mime] => text/javascript
                                                    [defer] =>
                                                    [async] =>
                                                )

                                            [/media/system/js/caption.js] => Array
                                                (
                                                    [mime] => text/javascript
                                                    [defer] =>
                                                    [async] =>
                                                )

                                            [/plugins/content/extravote/assets/extravote.js] => Array
                                                (
                                                    [mime] => text/javascript
                                                    [defer] =>
                                                    [async] =>
                                                )

                                            [http://floristics.info/modules/mod_news_pro_gk5/interface/scripts/engine.mootools.js] => Array
                                                (
                                                    [mime] => text/javascript
                                                    [defer] =>
                                                    [async] =>
                                                )

                                        )
Ну, кроме кучи всего другого.
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 666


« Ответ #147 : 21.11.2015, 15:31:35 »

О боже, зачем вы копируете каждую букву? jurassik хотел, чтобы вы просто убрали $this->baseurl:
Код
<?php
unset(
  $this->_scripts['/media/system/js/caption.js']
);
?>
 
эта часть должна отрабатывать, остальные скрипты отсутствуют в _scripts
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #148 : 21.11.2015, 15:39:59 »

Спасибо, что морочитесь. Вот что получается. Прописал перед <head> в layout.php (у меня этот файл является шаблоном).
Код:
<?php
unset($this->_scripts['/media/system/js/caption.js']);
?>
А в исходном коде страницы после обновления страницы с очисткой кеша и очисткой кеша в админке все равно присутствует
Код:
<script src="/media/system/js/caption.js" type="text/javascript"></script>
По-моему, это не справедливо. Cry
Записан
robert
Профи
********

Репутация: +359/-13
Offline Offline

Пол: Мужской
Сообщений: 3760


« Ответ #149 : 21.11.2015, 16:17:36 »

1. Непонятно, почему print_r($this->_scripts) выдает пустой результат, а print_r($this) показывает непустое _scripts.
2.
А в исходном коде страницы после обновления страницы с очисткой кеша и очисткой кеша в админке все равно присутствует
Код:
<script src="/media/system/js/caption.js" type="text/javascript"></script>
По-моему, это не справедливо. Cry
Ничего несправедливого в этом нет: этот скрипт вы могли подключить вручную в шаблоне.
Записан
Gerostrat
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 139



« Ответ #150 : 21.11.2015, 16:18:31 »

Он подключается, как и должен, наверное, в behavior.php
Я могу сбросить весь текст, который дает print_r($this). Можете глянуть?
Записан
Страниц: 1 2 3 4 [5] 6   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet