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

Varyag0488

  • Захожу иногда
  • 68
  • 1 / 0
Здравствуйте форумчане!

Тема сто раз обсуждалась понятное дело. Но хочу поделиться тем что уже есть и тем что хочу сделать. (первое полезно для новичков, второе и для меня) - как говорится - авось кому пригодится

Ситуация такая: есть сайт в инете, возникла проблема в долгой загрузке - думаю не у меня одного такая проблема  ^-^

Начал я оптимизировать. Несколько статистики: запрашивалось файлов 48, сейчас 26, загрузка сайта значительно ускорилась. Кто понимает в количестве загружаемых файлов, в важности этого - знает, а кто не знает сейчас объясню: браузеры одновременно моут загружать 2 файла (как правило) т.е. представьте что браузер будет грузить 48 файлов - сколько ему надо сделать зпросов - это очень долго, а для сайта это плохо.

Еще включил кеш в Joomla, установил: webo site speed up, включил gzip сжатие - всеравно недостаточно.

если Вы собираетесь оптимизировать то найдите хороший сайт в интеренете который проверит скорость загрузки вашего сайта, а также напишет статистику и что грузится - это важно, к тем более вы сможете проверить прогресс.

Итак дальше: под прессинг попал мой шаблон - т.к. мне не требовался вывод определнных позиций для модулей, то я удалил все эти позиции (параллельно с ними удалил ненужный CSS)

Следующий попал CSS: просмотр HTML-кода, который генерировала Joomla выявил пару лишних CSS файлов (которые рекомендуют подключать все инструкции по созданию шаблона) как вы догадались это system.css и general.css. ВЫ уже знаете что браузер качает два файла одновременно- а эти CSS тоже качает. Решение: объединить их с файлом вашего шаблона - минус 2 запроса.

во время объединения файлов вы увидите, что в файле general.css есть куча строк вида background: url(../images/j_button2_right.png) 100% 0 no-repeat;. Честно не знаю зачем они нужны, но все эти изображения, как я понял, подгружает броузер (так и показывал мой сайт проверки загрузки сайта) - Решение: удалить все эти строки + удалить все стили, в которых эта строка одна - так мы получим минус 10 запросов (или больше) + уменьшение CSS файла в размере. Здесь и мне интересно: кто скажет зачем они нужны эти картинки?

Следующая оптимизация CSS: убрать все пробелы в шаблоне (имею в виду в CSS файле), отступы - так Вы уменьшите вес файла + по максимуму сократить описание, например заменить вот такую штуку: /*--------------- system ----------------------------*/ на /* system */ или просто их поудалять если вы хорошо знаете свой шаблон. Например мне такая чистка помогла снизить шаблон на байт 500 (а может и больше). Кроме того, по мере приобретения опыта в CSS я перебрал CSS своего шаблона (он один без генерал и систем весил 8 кб). сократил его до ! 4 кб! подключил генерал и систем в него, весит файл сейчас 6,5 кб - я офигел  ;D

Таже процедура полезна для index.php шаблона (у меня этот файл после обработки весит 1,2 кб ;D)

Такс, ну про ручной труд я закончил, хотя нет - если Вы хотите (есть время) и если вы используете редактор TinyMCE -то просмотря HTML код вы обнаружите кучу лишнего HTML кода, который он создает - ужос! :( Я создал свои стили оформления и руками все делаю в HTML - так сокращаю код, хотя не на много.

НУ свои наработки высказал, теперь перейдем к теме:

кто знает какой PHP код генерирует строка <jdoc:include type="head" />, как его можно уменьшить (убрать лишнее). кароче записать этот ПХП код в шаблон, но без лишнего

И второе: каким образом Joomla! прикрепляет JS к страницам, какие JS файлы, и как избавиться отлишних файлов? (У меня в кеше они весят в куче порядка 100 кб - ужас)


Заранее благодарю  ^-^
*

beliyadm

  • Легенда
  • 9497
  • 1648 / 65
  • Севастополь == Россия
Цитировать
кто знает какой PHP код генерирует строка <jdoc:include type="head" />, как его можно уменьшить (убрать лишнее). кароче записать этот ПХП код в шаблон, но без лишнего
libraries\joomla\document\html\renderer\head.php
Цитировать
И второе: каким образом Joomla! прикрепляет JS к страницам, какие JS файлы, и как избавиться отлишних файлов? (У меня в кеше они весят в куче порядка 100 кб - ужас) 
Обычно крепятся по умолчанию файлы mootools\caption и зачастую они совершенно не нужны http://joomlaforum.ru/index.php/topic,62089.0.html
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Varyag0488

  • Захожу иногда
  • 68
  • 1 / 0
beliyadm, благодарю, поработал в head.php отключил мутулс и кэптион таким кодом:

      // Generate script file links
      foreach ($document->_scripts as $strSrc => $strType) {

         if (($strSrc == '/media/system/js/mootools.js') or ($strSrc == '/media/system/js/caption.js')){
            } else {
         $strHtml .= $tab.'<script type="'.$strType.'" src="'.$strSrc.'"></script>'.$lnEnd;
                  }
      }

beliyadm, не знаешь использует ли форум кунена эти скрипты?

И вопрос 2, как мне можно подключить этот файл (head.phph) непосредственно в мой index.php ?  

вот блин, даже не обратил внимание что админ панель использует мутулс и крепит через этот файл к себе, нужно как-то придумать чтобы только в админке цеплялось
« Последнее редактирование: 15.02.2010, 14:33:55 от Varyag0488 »
*

beliyadm

  • Легенда
  • 9497
  • 1648 / 65
  • Севастополь == Россия
beliyadm, не знаешь использует ли форум кунена эти скрипты?
не знаю
По поводу отключения мутулза - я дал ссылку как убрать на уровне шаблона без вмешательства в ядро
И вопрос 2, как мне можно подключить этот файл (head.phph) непосредственно в мой index.php ? 
Этот файл и все прочие обрабатывается конструкцией  <jdoc:include type="head" />. В том числе подключение файлов в хедер\изменение титлов\ключевых слов\описания в стандартных и сторонних расширениях, потому из шаблона убирать эту строку нельзя
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Varyag0488

  • Захожу иногда
  • 68
  • 1 / 0
beliyadm, все понял, значит копаем в другом направлении:)

попробовал вставить тот код по ссылке http://joomlaforum.ru/index.php/topic,62089.0.html, куда не лепил выдает ошибку 500, файл head.php восстановил не пойму что хочет
« Последнее редактирование: 15.02.2010, 14:47:21 от Varyag0488 »
*

marvic

  • Новичок
  • 8
  • 2 / 0
Кстати убрать mootools.js и caption.js без редактирования файлов ядра можно добавив в шаблоне в файле index.php в конец следующий код:

      $headerstuff=$this->getHeadData();
      reset($headerstuff['scripts']);
      foreach($headerstuff['scripts'] as $key=>$value){
        unset($headerstuff['scripts'][$key]);
      }      
      $this->setHeadData($headerstuff);
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Кстати убрать mootools.js и caption.js без редактирования файлов ядра можно добавив в шаблоне в файле index.php в конец следующий код:

      $headerstuff=$this->getHeadData();
      reset($headerstuff['scripts']);
      foreach($headerstuff['scripts'] as $key=>$value){
        unset($headerstuff['scripts'][$key]);
      }      
      $this->setHeadData($headerstuff);
после таких манипуляций боюсь не только уберутся mootools.js и caption.js, а и все остальные JS, которые могут подключаться сторонними расширениями :)
*

beliyadm

  • Легенда
  • 9497
  • 1648 / 65
  • Севастополь == Россия
Код: php
$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);
}
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
*

Varyag0488

  • Захожу иногда
  • 68
  • 1 / 0
Ура заработало! не знаю почему не работало!! beliyadm , благодарю!

во время объединения файлов вы увидите, что в файле general.css есть куча строк вида background: url(../images/j_button2_right.png) 100% 0 no-repeat;. Честно не знаю зачем они нужны, но все эти изображения, как я понял, подгружает броузер (так и показывал мой сайт проверки загрузки сайта) - Решение: удалить все эти строки + удалить все стили, в которых эта строка одна - так мы получим минус 10 запросов (или больше) + уменьшение CSS файла в размере. Здесь и мне интересно: кто скажет зачем они нужны эти картинки?

Это кнопки редактора статьи, если заходить на сайт под администратором или автором. Я так понял что для обычных пользователей они не нужны.
*

neket

  • Захожу иногда
  • 61
  • 11 / 1
А каким образом в файле /libraries/joomla/document/html/renderer/header.php вставить свой JS-файл в этот код ?
Код
		// Generate script file links
foreach ($document->_scripts as $strSrc => $strType) {
$strHtml .= $tab.'<script type="'.$strType.'" src="'.$strSrc.'"></script>'.$lnEnd;

}
*

MuraDweb

  • Захожу иногда
  • 267
  • 124 / 1
neket, не надо трогать файл ядра.
Подключить можно через index.php шаблона, к примеру если скрипт расположен в папке js шаблона, то:
Код: php
<?php $doc =&JFactory::getDocument();
         $doc->addScript($this->baseurl.'/templates/'.$this->template.'/js/moiscript.js');
?>
Яндекс.Деньги: 41001423568435
Webmoney: R 377548789269 | Z 421465848009 | E 126339514076 | U 413960261029
-
А, Вы читали ? Правила форума | FAQ J! 1.5 | FAQ J! 1.0
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
или так
Код: php
<?php JHTML::_('script', 'moiscript.js', $this->baseurl.'/templates/'.$this->template.'/js/', false  ); ?>
*

Doc

  • Захожу иногда
  • 456
  • 17 / 0
Цитировать
во время объединения файлов вы увидите, что в файле general.css есть куча строк вида background: url(../images/j_button2_right.png) 100% 0 no-repeat;. Честно не знаю зачем они нужны, но все эти изображения, как я понял, подгружает броузер (так и показывал мой сайт проверки загрузки сайта) - Решение:  удалить все эти строки + удалить все стили, в которых эта строка одна - так мы получим минус 10 запросов (или больше) + уменьшение CSS файла в размере. Здесь и мне интересно: кто скажет зачем они нужны эти картинки?
А можно поточней, что и где удалить нужно ?
А то у меня требовало j_button2_right.png, которого нет в папке, а я туда его добавил
У меня выдает 29 запросов, думаю может как уменьшить, раз вы пишите что на 10 меньше стало
*

roga_i_kopita

  • Осваиваюсь на форуме
  • 32
  • 4 / 0
Давно мучаюсь с этой задачей. Мне не нравится стандартное расположение тегов и ссылок в head.
Удалось переписать весь head под себя в шаблоне. При этом убрал из шаблона строку <jdoc:include type="head" />.
Но, при подключении сторонних модулей, как и ожидал, появились "нюансы".  ;D

Покажу на примере подключения файлов скриптов. Для этого использую в head следующую конструкцию (взял и немного переделал под себя из файла libraries\joomla\document\html\renderer\head.php):
Код
$static_domain = preg_replace('/\/$/','',str_replace('www','static',JURI::base())); // тут для статичного контента меняю адрес на другой домен
foreach ($this->_scripts as $strSrc => $strAttr) {
$mime = (!is_null($strAttr['mime']))? ' type="'.$strAttr['mime'].'"' : '';
$defer = ($strAttr['defer'])? ' defer="defer"' : '';
$async = ($strAttr['async'])? ' async="async"' : '';
echo '<script src="'.$static_domain.$strSrc.'"'.$mime.$defer.$async.'></script>'."\n";
}

В итоге нормально подключаются стандартные скрипты Joomla. В исходном коде страницы в нужном месте появляются ссылки:
Код
<script src="http://static.mydomain.com/media/system/js/core.js" type="text/javascript"></script>
<script src="http://static.mydomain.com/media/system/js/mootools-core.js" type="text/javascript"></script>
<script src="http://static.mydomain.com/media/system/js/caption.js" type="text/javascript"></script>

Аналогичным образом работают links. При включении в админке "отображать ссылки на rss-ленту" в исходном коде в head появляются соответствующие ссылки *.feed...
Для ссылок использую в файле шаблона конструкцию (тоже слегка модифицированную из файла libraries\joomla\document\html\renderer\head.php):
Код
foreach ($this->_links as $link => $linkAtrr) {
$attribs = ($linkAtrr['attribs'])? ' '.JArrayHelper::toString($linkAtrr['attribs']) : '';
echo '<link href="'.$link.'" '.$linkAtrr['relType'].'="'.$linkAtrr['relation'].'"'.$attribs.' />'."\n";
}

В исходном коде страницы появляются ожидаемые ссылки:
Код
<link href="/power/heat-guns/gas-heat-guns-direct-heating.feed?type=rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
<link href="/power/heat-guns/gas-heat-guns-direct-heating.feed?type=atom" rel="alternate" type="application/atom+xml" title="Atom 1.0" />

Я был безмерно счастлив. В принципе, всё работает. Ссылки, когда надо подключаются, когда надо - отключаются.
Но потребовалось установить модуль RokTabs. И вот тут столкнулся с неприятностью.

Сам модуль подключает свои файлы в head следующим образом:
Код
$document =& JFactory::getDocument();
$path = JPATH_SITE . '/modules/mod_roktabs/tmpl/';
$uri_path = JURI::Root(true).'/modules/mod_roktabs/tmpl/';
$style_css = $path . $style . '/roktabs.css';
$css = $uri_path . $style . '/roktabs.css';

if (file_exists($style_css)) $document->addStyleSheet($css);
if (!defined('ROKTABS_JS')) {
$document->addScript($uri_path . 'roktabs'.modRokTabsHelper::_getJSVersion().'.js');
define('ROKTABS_JS',1);

Соответственно, я ожидаю, что новые файлы от стороннего модуля будут помещены в массив данных head, вместе со стандартными файлами mootools. И оттуда (из массива) я их выберу и включу в файле шаблона. Но там их нет!
Проверил, поместив следующий код в файл index.php шаблона:
Код
<?php $head = $this->getHeadData();
$output = print_r ($head, true);
echo $output; ?></p>

В результате при обновлении страницы с опубликованным модулем RokTabs получил содержимое всего массива head в следующем виде:
Код
Array ( 
[title] => Главная
[description] => Тут выводится описание (description)
[link] =>
[metaTags] => Array (
[http-equiv] => Array (
[content-type] => text/html
)
[standard] => Array (
[robots] => index, follow
[keywords] => Тут отображаются мои ключевые слова
[rights] =>
)
)
[links] => Array ( )
[styleSheets] => Array ( )
[style] => Array ( )
[scripts] => Array (
[/media/system/js/core.js] => Array (
[mime] => text/javascript
[defer] =>
[async] =>
)
[/media/system/js/mootools-core.js] => Array (
[mime] => text/javascript
[defer] =>
[async] =>
)
[/media/system/js/caption.js] => Array (
[mime] => text/javascript
[defer] =>
[async] =>
)
)
[script] => Array ( )
[custom] => Array ( )
)

Я привёл вывод содержимого массива head при отображении главной страницы сайта, с включенным модулем RokTabs (модуль опубликован на главной странице и на всех остальных).
Я констатирую, что в исходном коде страницы при использовании в head стандарной строки <jdoc:include type="head" /> скрипты и стили от модуля RokTabs присутствуют вместе со скриптами mootools.js.
Также из вывода массива видно, что скрипты в массиве head присутствуют. НО ТОЛЬКО СТАНДАРТНЫЕ (mootools и т.п.). Сторонних скриптов (от модуля RokTabs) там нет! Они есть в исходном коде страницы, но их нет в массиве head! Вопрос: почему? Куда тогда помещаются скрипты и файлы стилей сторонних модулей, если не в массив head? Как в таком случае их перехватить и включить в head в файле шаблона? К переменной $buffer обращаться чтоли? Или как?

Читал по этому поводу документацию по ссылке: _http://docs.joomla.org/JDocument/addScript
Там, в частности, сказано:
Цитировать
To add a link to some JavaScript code at a specific URL, you could use:

$doc =& JFactory::getDocument();
$doc->addScript("http://www.example.com/js/myscript.js");

How this is rendered depends on the document type. If the document type is HTML then this code will produce following link in the HTML HEAD section:
<script type="text/javascript" src="http://www.example.com/js/myscript.js"></script>

Как там написано, так скрипты от модуля RokTabs и подключаются. Но почему в массиве-то их нет, а на HTML странице они есть? Откуда они берутся?
Если эту проблему решить, то head можно будет генерировать в файле шаблона самостоятельно, и размещать теги в нужной последовательности.
Кстати, скрипты я вообще подключаю в самом конце страницы, перед закрывающим тэгом </body>.
« Последнее редактирование: 04.11.2011, 23:57:00 от roga_i_kopita »
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Привет.А не подскажите как подключать скрипт в модуле, но что бы он выводился не в ХЕДЕ, а перед закрывающим </body>??
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Привет.А не подскажите как подключать скрипт в модуле, но что бы он выводился не в ХЕДЕ, а перед закрывающим </body>??
в модуле никак
в плагине можно, после рендеринга страницы поставить куда угодно
*

Fedor Vlasenko

  • Живу я здесь
  • 3841
  • 723 / 7
  • Все начинается с Value
Цитировать
в модуле никак
динамически подгружать с помощью js ;D
*

Fedor Vlasenko

  • Живу я здесь
  • 3841
  • 723 / 7
  • Все начинается с Value
Маленький пример. И когда они уже перепишут свою функцию добавления скриптов. Вот интересное решение
Код: javascript
var js = {
    load: function (src, callback) {
        var script = document.createElement('script'), loaded;
        script.src = src;
        script.async = true;
        if (callback) {
            script.onreadystatechange = script.onload = function () {
                if (!loaded) {
                    callback();
                }
                loaded = true;
            };
        }
        document.getElementsByTagName('body')[0].appendChild(script);
    }
};
js.load('//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js', function (jQuery) {
//работаем
});

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-00000000-1']);
_gaq.push(['_trackPageview']);
js.load('http://www.google-analytics.com/ga.js');
js.load('myscript.js');
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Код: php
$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);
}
Привет, а как такое же действие сделать в Joomla 3.Этот код мне не помог((
*

Kote_2228

  • Захожу иногда
  • 65
  • 0 / 0
  • Вера, которую не разделяет никто, называется шизой
Привет, а как такое же действие сделать в Joomla 3.Этот код мне не помог((


на 3.0 мне помог.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0

на 3.0 мне помог.
Я  , дурик, подумал что этот код удаляет все скрипты, которые я пропишу))Потом псомтрел что тех скриптов, которые мне надо удалиить, не было в масиве. Решением было установить плагин, который это может делать))
*

ankagiz

  • Новичок
  • 3
  • 0 / 0
Подскажите, пожалуйста, реально ли вынести ВСЕ CSS и js сайта в 2 файла?
Действующий интернет-магазин на базе Joomla 1.5
*

beliyadm

  • Легенда
  • 9497
  • 1648 / 65
  • Севастополь == Россия
Подскажите, пожалуйста, реально ли вынести ВСЕ CSS и js сайта в 2 файла?
Действующий интернет-магазин на базе Joomla 1.5
да
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Записки нетрезвого кодера
Skype: beliyadm_pb
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Где Как удалить атрибуты "type="text/javascript"?

Автор safronoff343

Ответов: 9
Просмотров: 3557
Последний ответ 28.06.2018, 12:08:17
от stydent
Как подключить js не в <head> а в конец страницы.

Автор vanya829

Ответов: 25
Просмотров: 15585
Последний ответ 18.06.2017, 16:37:11
от skytype
Убираем пустые поля в head

Автор Aiden

Ответов: 11
Просмотров: 1410
Последний ответ 17.03.2016, 08:34:31
от flyingspook
Как правильно внедрить подгрузку скрипта через include?

Автор Zegeberg

Ответов: 5
Просмотров: 794
Последний ответ 25.07.2015, 13:45:57
от Zegeberg
Странные дубли (Страницы недопустимого Content-type)

Автор Spacegeorge

Ответов: 4
Просмотров: 1132
Последний ответ 22.10.2013, 06:55:23
от Spacegeorge