0 Пользователей и 1 Гость просматривают эту тему.
  • 150 Ответов
  • 95504 Просмотров
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Уважаемые форумчане! Для ускорения загрузки Ваших сайтов предлагаю рассмотреть данное решение.
Поисковые системы 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
*

ChaosHead

  • Гуру
  • 5241
  • 451 / 13
https://ajax.googleapis.com/ajax/libs/mootools/1.3.2/mootools-yui-compressed.js - это только mootools-core.js без mootools-more.js. Поэтому он столько и весит.
Да и как я понял вы предлагаете ещё отключить core.js и caption.js? А их зачем, с фронтенда же не сможете материалы создавать?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js - это только mootools-core.js без mootools-more.js. Поэтому он столько и весит.
Да и как я понял вы предлагаете ещё отключить core.js и caption.js? А их зачем, с фронтенда же не сможете материалы создавать?
Согласен полностью. Тут стоит вопрос производительности.
Многие на сайте документы создают в фронтенде?
А по поводу mootools-more.js В этот файл включили все дополнения функций mootols
Скажите а знаете вы их? Используете ли вы их? И зачем тягать с собой такой довесок сжатая версия 233кб.
Как же поступить кода компонент или модуль плагин использует функции mootools-more.js
Вот мое решение
Запускаем FireBug вкладка консоль. Смотрим какие недоступные функции пытаемся вызвать
Идем в MooTools More Builder добавляем нужные нам дополнения, скачиваем файл. Копируем файл скрипта себе на сайт и подключаем примерно так
Цитировать
$document = JFactory::getDocument();
$document->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js');
$document->addScript('http://Ваш сайт и путь к скрипту mootools-more');
Скрипт можно по желанию обработать packerom
Или сжать скрипт здесь
Файл скрипта mootools-more будет гораздо меньше
*

ChaosHead

  • Гуру
  • 5241
  • 451 / 13
Ну например Kunena форум использует. Но людям же если вы советуете, то нужно обьяснить, что если у вас простенький блог, то убирайте их. Но имейте ввиду, что многие компоненты не будут должным образом работать. А в некоторых случаях mootools можно так вообще совсем отключить.

Сжимать их кстати можно в http://refresh-sf.com/yui/
А если на хостинге ещё и gzip включить то как раз вы и получите эти файлы совсем небольшого размера.
И если грамотно настроить заголовки expires, то скрипты будут загружатся пользователем 1 раз, а потом браться из кеша.

В AJAX.googleapis.com так и сделано, из-за этого и ускорение.

И кстати есть ещё yandex api. А у многих провайдеров yandex находится в домашней сети и не имеет ограничений по скорости. Вот в этом плане лучше даже его использовать. Под 1.5 был готовый плагин для этого.

А тема кстати безусловно полезная. Лично меня напрягает, что от версии к версии этот mootools растёт и растёт. А это плохо для пользователей с мобильников.
« Последнее редактирование: 19.01.2012, 17:22:00 от ChaosHead »
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
ускорить можно не без лишнего вмешательства
1 требуется выключить всю загрузку js и CSS из всех расширений
2 подключить их в индекс файле
3 оптимизировать
4 включить gzip сжатие как на хосте так и в админке
5 оптимизировать изображения
6 ну и далее...
а брать их со стороны смысл не большой, даже если они закешированы будут в браузере,
остается в основном обращение к стороннему серверу
бесплатного сыра даже в мышеловке нет)))
а чтоб ускорить сайт требуется над ним работать, плюс сервер хороший надо
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
ChaosHead Даже так быстрее
Цитировать
обходится лимит на ограничение количества запросов к одному хосту, скрипты загружаются параллельно с другими элементами сайта
Код
<?php
$document = JFactory::getDocument();
unset($this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js']);
$document->addScript('https://ajax.googleapis.com/ajax/libs/mootools/1.4.2/mootools-yui-compressed.js');
$document->addScript('http://Ваш сайт и путь к скрипту mootools-more');
?>
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
Лично я только начал осваивать оптимизацию, но на своем j 1.7 + K2 я сделал что mootools*всё грузятся только если ты зарегистрирован и хочешь добавлять новости, т.е. для 90% посетителей оно вообще не грузится
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

shadowrun

  • Захожу иногда
  • 78
  • 1 / 0
из моего нубского опыта:
на нормально настроеном серваке где вся статика кешируется через nginx, а также настроено минимизация и объединение скриптов - сайт грузится всеже быстрее, чем если выносить мотулзы и джикуери на CDN.
Выносить на CDN имеет смысл если хостинг у вас..средней паршивости
*

ChaosHead

  • Гуру
  • 5241
  • 451 / 13
Кстати вот готовый плагин, если кому нужно. Он может и другие библиотеки с Google грузить http://extensions.joomla.org/extensions/site-management/content-networking/6981
*

Master255

  • Осваиваюсь на форуме
  • 14
  • 0 / 3
Всё проще. В head.php нужно прописать:

   if ($app->isAdmin()!=1) {
         $buffer .='<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"/></script>
';
         }
            
       // Generate script file links
      foreach ($document->_scripts as $strSrc => $strAttr) {
      if ((($strSrc != '/media/system/js/mootools-more.js') and ($strSrc != '/media/system/js/mootools-core.js') and ($strSrc != '/media/system/js/core.js')) or (($app->getCfg('debug') ==0) and ($app->isAdmin() == 1))) {
         $buffer .= $tab.'<script src="'.$strSrc.'"';
         if (!is_null($strAttr['mime'])) {
            $buffer .= ' type="'.$strAttr['mime'].'"';
         }
         if ($strAttr['defer']) {
            $buffer .= ' defer="defer"';
         }
         if ($strAttr['async']) {
            $buffer .= ' async="async"';
         }
         $buffer .= '></script>'.$lnEnd;
      }
      }
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
Случайно наткнулся на этом форуме на подобную тему где smart дал интересный код для шаблона.
Код
$user =& JFactory::getUser();
if ($user->get('guest') == 1) {
  $headerstuff = $this->getHeadData();
  $key1 = JURI::base(true). '/media/system/js/mootools.js';
  $key2 = JURI::base(true). '/media/system/js/caption.js';
  $key3 = JURI::base(true). '/media/system/js/mootools-core.js';
  $key4 = JURI::base(true). '/media/system/js/mootools-more.js';
  unset($headerstuff['scripts'][$key1], $headerstuff['scripts'][$key2], $headerstuff['scripts'][$key3], $headerstuff['scripts'][$key4]);
  $this->setHeadData($headerstuff);
}
(я добавил в код core и more, можете изменять на свое усмотрение)
Код убирает скрипты для гостей на сайте. Решение как мне кажется идеальное. На http://www.unshit.com/ru/ после установки скинул 25! кусков. было 35 стало 10. А после авторизации можно спокойно писать с фронта.
Проблем с работой сторонних расширений пока не обнаружил. Просьба отписываться если такие будут.
Это бидаль пича.
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
А если к примеру на сайте присутствуют модули работающие на му и видимые для гостей?
*

HiopsNerevar

  • Давно я тут
  • 630
  • 88 / 0
  • Я удобный.
А если к примеру на сайте присутствуют модули работающие на му и видимые для гостей?
Мдя. Ну может ни настолько и идеальное. С другой стороны преимущества кода в том что его можно достаточно гибко переписывать. В любом случае мне кажется что как один из вариантов имеет место быть.
Это бидаль пича.
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Никто и не спорит. Способов оптимизации достаточно и выбирается обычно оптимальный для отдельно взятого проекта. Панацеи нет
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
каждая оптимизация индивидуальна, и ни как не зависит от того где скрипты на CDN или у себя
много зависит от сервера/хоста где сайт расположен, и еще от многих факторов
*

Makc

  • Захожу иногда
  • 55
  • 11 / 0
при отключении mootools не будет работать ReCAPTCHA

я когда делел добавлял проверку на страницу регистрации, чтоб там подрубать их
Всё, что пишу, проверено или работатет на J 1.7 + К 2.5.4
*

Langoliers

  • Давно я тут
  • 621
  • 67 / 2
  • Если б Я изучал людей, то был бы паразитологом
Решение на уровне плагина JB Library plugin от клуба Joomlabamboo
Честно говоря меня пугает размер плагина в пол метра о_О
*

pedrosoft

  • Захожу иногда
  • 367
  • 113 / 7
Интернет Хостинг Центр: отличные цены, лучшее качество, расположение в дата-центре «Оверсан-Меркурий»
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
Люди! Помогите. Нужно тоже отключить Мутелз и другие скрипты, но что-то не выходит. Вставляю туда, куда написали вы - а они не отключаются. Вот страница http://butique.hourb.com/ Проверяю пр и помощи  http://tools.pingdom.com/fpt/#!/yPmbJR6uj/http://butique.hourb.com/
Цитировать
Код
$document = JFactory::getDocument();
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']);

так же еще пробовал
Код
unset($this->_scripts[$this->URLbase().'/media/system/js/mootools-core.js']

и вот такое
Код
unset($this->_scripts[('http://butique.hourb.com/media/system/js/mootools-more.js')] 

Вставляю ваш код в самое начало index.php шаблона после
Код
<?php 
// No direct access.
defined('_JEXEC') or die;
- не выходит
Вставляю ваш код в <head></head> перед <jdoc:include type="head" /> - не выходит

Ничего не выходит! Нужна ваша помощь. Может вы посмотрите в чем причина. Я и читил кеш в админпанели и кеш браузера и в разных браузерах открывал. Шаблон от ГАВИКА. Жомла 2,5 Фреймворк Cavern

HEAD of template

Код
<head>    
    <?php if($this->getParam("chrome_frame_support", '0') == '1') : ?>
    <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
    <?php endif; ?>    
    <meta http-equiv="X-UA-Compatible" content="IE=9" />    
    <jdoc:include type="head" />
    <?php $this->loadBlock('head'); ?>
</head>

Start of Tamplate

Код
<?php 
// No direct access.
defined('_JEXEC') or die;
if($this->getParam("cwidth_position", 'head') == 'head') {
$this->generateColumnsWidth();
}
$this->addCSSRule('.gkWrap { width: ' . $this->getParam('template_width','1240px'). '!important; }');
« Последнее редактирование: 16.04.2012, 22:50:39 от Yura Vakulenko »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Я же написал в шапке как можно отключить все и надолго
Но потом если компоненты будут нуждаться, то вручную прописывать придется.
Причем не понятно зачем Вам их там отключать когда Вы ими пользуетесь. А вот в модулях некоторых посмотрите повторную загрузку одних и тех же скриптов.
И какое отношение Ваше сообщение имеет к данной теме?
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
Я же написал в шапке как можно отключить все и надолго
Но потом если компоненты будут нуждаться, то вручную прописывать придется.
Причем не понятно зачем Вам их там отключать когда Вы ими пользуетесь. А вот в модулях некоторых посмотрите повторную загрузку одних и тех же скриптов.
И какое отношение Ваше сообщение имеет к данной теме?
отключать - потому что хочу использовать библиотеки Мутулза и Джейквери Google, а для этого нужно мои отключить!! А у меня не получается.
вот, вы писали
Цитировать
Загружаем Mootools предварительно отключив скрипт сайта. Вставляем нижеприведенный код в шаблон сайта (index.php) перед <head>

Я этот код и перед ней вставлял и после и в начале страницы и в Блоке head.php - у меня все-равно ничего не вышло. Просто хочу попросить помощи у вас.

Вот так сейчас у меня в шаблоне

Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:og="http://ogp.me/ns#"
  xmlns:fb="http://www.facebook.com/2008/fbml"
  xml:lang="<?php echo $this->API->language; ?>" lang="<?php echo $this->API->language; ?>">
<?php
defined('_JEXEC') or die;
$document = JFactory::getDocument();
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']);
?>     
<head>   
    <?php if($this->getParam("chrome_frame_support", '0') == '1') : ?>
    <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
    <?php endif; ?>   
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
   
    <jdoc:include type="head" />
    <?php $this->loadBlock('head'); ?>
</head>

И все-равно не работает!
« Последнее редактирование: 16.04.2012, 23:06:42 от Yura Vakulenko »
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
как вариант
по удаляй все в ручную а от googl подключи  :laugh:
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
как вариант
по удаляй все в ручную а от googl подключи  :laugh:

А вам смешно!! А мне нет! Я уже несколько часов сижу с этой, на первый взгляд, ерундой долбаюсь! Мои нервы уже не выдерживают! Не все же такие умные и профессиональные...
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
перед </body> как вариант

Сейчас.. дело в том, что я пробовал поставить перед <!DOCTYPE  - но так тоже не работает.

у меня там такой код..
Код
<?php 
// No direct access.
defined('_JEXEC') or die;
if($this->getParam("cwidth_position", 'head') == 'head') {
$this->generateColumnsWidth();
}
$this->addCSSRule('.gkWrap { width: ' . $this->getParam('template_width','1240px'). '!important; }');

$tpl_page_suffix = '';

-----------------------------------);
// defines if register is active
define('GK_REGISTER', ($this->modules('register')? $userID == 0 : false));
// defines if login is active
define('GK_LOGIN', $this->modules('login'));
// defines if com_users
define('GK_COM_USERS', $option == 'com_users' && ($view == 'login' || $view == 'registration'));

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Не выходит!
« Последнее редактирование: 16.04.2012, 23:32:15 от Yura Vakulenko »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
Да и чтобы не мучатся предложили варианты с использованием плагинов

Что это за варианты - есть какие-то другие варианты отключения яваскриптов и подключение своих версий?? Возможно не использую unset ?? Я уже не знаю, что делать! Ну просто с такой ерундой столько просидеть! Я и использовал еще
Код
$user = & JFactory::getUser();
if ($user->get('guest') == 1) {
$headerstuff = $this->getHeadData();
$key1 = JURI::base(true). '/media/system/js/mootools.js';
$key2 = JURI::base(true). '/media/system/js/caption.js';
unset($headerstuff['scripts'][$key1], $headerstuff['scripts'][$key2]);
$this->setHeadData($headerstuff);
}

Но этот вариант выдает ошибку на странице и ничего не грузится..
Цитировать
Fatal error: Call to undefined method GKTemplate::getHeadData() in /home/u295850766/public_html/templates/gk_game_magazine/layouts/default.php on line 46
сдесь еще какой-то вариант бы - но я его потерял..

И еще - как явно указать путь к скриптав в этой структуре
Код
unset($this->_scripts[$this->URLbase(). '/media/system/js/mootools-core.js'], 
Как нужно написать код
Код
 unset($this->_scripts[('SCRIPT_PATH')] 
?
« Последнее редактирование: 17.04.2012, 00:12:43 от Yura Vakulenko »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php-brief
<?php 
$this->_scripts = $this->_script = array();
?>
Нет скриптов :-)
*

Yura Vakulenko

  • Захожу иногда
  • 238
  • 6 / 1
Цитировать
И еще - как явно указать путь к скриптав в этой структуре
Код:

unset($this->_scripts[$this->URLbase(). '/media/system/js/mootools-core.js'],

Как нужно написать код
Код:

 unset($this->_scripts[('SCRIPT_PATH')]

?

Вот с этим подскажите и где его точно нужно вставлять!!

Вот так я убрал загрузку системных скриптов..

Код
<?php
$document =& JFactory::getDocument();
$document->_scripts=array();
$document->_script=array();
?>
Как удалить из этих масивов только отдельные скрипты?? unset почему-то не работает.
« Последнее редактирование: 17.04.2012, 01:09:27 от Yura Vakulenko »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Оптимизация сайта

Автор joni

Ответов: 0
Просмотров: 768
Последний ответ 22.07.2023, 17:10:11
от joni
Скрипт при закрытии сайта

Автор Mick_20

Ответов: 8
Просмотров: 1072
Последний ответ 14.06.2023, 18:40:20
от effrit
Не работает Вебвизор Яндекс из-за mootools

Автор MultiMatrix83

Ответов: 5
Просмотров: 2096
Последний ответ 01.03.2022, 14:40:23
от draff
Кнопка “Добавить в корзину” VirtueMart не работает на главной странице сайта

Автор max_max

Ответов: 0
Просмотров: 6457
Последний ответ 20.04.2021, 12:40:37
от max_max
[FAQ] Ускоряем загрузку сайта (руководства и инструменты)

Автор Fedor Vlasenko

Ответов: 117
Просмотров: 99904
Последний ответ 05.11.2020, 19:53:12
от Grigoriy82