» » Увеличение скорости загрузки сайта на DLE (часть 1) обновлено

Увеличение скорости загрузки сайта на DLE (часть 1) обновлено

27.08
153
61 782
Увеличение скорости загрузки сайта на DLE (часть 1) обновлено


Всем известно, что DLE - один из самых быстрых движков. Но не все знают о возможности его ускорения простыми средствами.
Не верите? Просто проверьте свой сайт и вы поймёте, что он медленный.

Проверили? Медленный? Тогда эта статья для Вас.


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

Оптимизация номер один - размещение скриптов на странице


Это, на мой взгляд, должно присутствовать изначально в двиге.

ВНИМАНИЕ!


Не советую производить первый шаг если не разбираетесь в подключении скриптов. Т.к. скорее всего при этом будет много ошибок js на разных страницах сайта
Первое, что проще всего сделать в чистой вёрстке для ускорения страницы - положить все скрипты в конец страницы, перед тегом </body>.
В DLE такого нет и мы это исправим.

Открываем index.php
Для DLE до версии 9.6
находим:
$tpl->set ( '{headers}', $metatags."n".build_js($js_array, $config) );

меняем на:
$tpl->set ( '{headers}', build_js($js_array, $config) );
$tpl->set ( '{metatags}', $metatags );


Для DLE 9.6 (и скорее всего более поздних версий)
находим:
$tpl->set ( '{headers}', $metatags."n".$js_array );

меняем на:
$tpl->set ( '{headers}', $js_array );
$tpl->set ( '{metatags}', $metatags );

Это разделит метатеги и скрипты. Иначе не получится правильно оформить страницу.

Открываем main.tpl
Находим {headers} и заменяем на {metatags}
Находим и удаляем {AJAX}
Перед </body> вставляем:
{headers}
{AJAX}

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

Оптимизация номер два - gzip-сжатие скриптов и стилей


  1. Теперь самое простое и интересное: включаем gzip-сжатие для js и css, лежащих в шаблоне.
    Для этого необходимо пройти в админку и включить сжатие js-файлов. Далее:
    Предположим у нас есть 2 файла стилей:
    <link media="screen" href="{THEME}/style/styles.css" type="text/css" rel="stylesheet" />
    <link media="screen" href="{THEME}/style/engine.css" type="text/css" rel="stylesheet" />

    Заеняем эти строки на:
    <link rel="stylesheet" href="/engine/classes/min/index.php?charset=windows-1251&amp;f={THEME}/style/styles.css,{THEME}/style/engine.css&amp;7" />

    Где:
    charset=windows-1251&amp; - указание на кодировку файла (можно удалить если нет русских символов в файле или сайт на utf-8)
    &amp;7 - количество дней, на которое кешируется файл.

    Таким же образом поступаем с перенесёнными в конец main.tpl (если всё же решили проделать первый шаг) дополнительными скриптами:
    <script type="text/javascript" src="{THEME}/js/libs.js"></script>
    <script type="text/javascript" src="{THEME}/js/somesctipt.js"></script>

    превращаем в:
    <script type="text/javascript" src="/engine/classes/min/index.php?charset=windows-1251&amp;f={THEME}/js/libs.js,{THEME}/js/somesctipt.js&amp;7"></script>

    В итоге существенно увеличивается скорость загрузки страниц. Однако нужно иметь ввиду, что при редактировании файлов необходимо очищать кеш DLE и кеш браузера.
  2. Снова проверяем сайт с помощью гугла (ссылка в начале поста) и радуемся существенному прибавлению баллов.


В следующий раз постараюсь рассказать как использовать кеш браузера для ещё большего ускорения страниц.

Похожие материалы

Комментарии

ПафНутиЙ
ПафНутиЙ 18 марта 2015 10:26
Отлично. Рад за вас.
cmscripts
cmscripts 21 марта 2015 17:08
Первый шаг поднял сайт с 88 до 94/100 по PageSpeed Insights.

Но в консоли возникла ошибка, из за reCAPTCHA.

Кусок кода, на которую ругается консоль:

залил на яндекс диск код, не могу вставить: yadi.sk/i/9JlQkjGzfQtv6

Как решить? Заранее спасибо!
ПафНутиЙ
ПафНутиЙ 28 марта 2015 13:21
он живёт, если не ошибаюсь в show.full.php или engine.php
удалите его оттуда и переместите в js-файл.
MxWhite
MxWhite 2 апреля 2015 19:42
Спасибо за инфо. Я правда снес в index.php этот кусок - , $js_array - и руками вниз добавил все стандартные скрипты. А один, мне нужный, оставил вверху - так и скорость поднял и сайт не кривой.
shmel1985
shmel1985 7 апреля 2015 14:45
Добрый деньПафНутиЙ, помогите разобраться,
Добавляю в самый низ перед </body> {headers}{AJAX},
Слайдер перестаёт работать скорость в PageSpeedInsights 81, меняю в слайдере javascript
jQuery(document).ready(function ($) {

на
window.onload = function() {

Слайдер работает но PageSpeedInsights скорость 71 и мне пишет уберите скрипты в низ страницы хоть они и так в самом низу
engine/classes/js/jquery.js
engine/classes/js/jqueryui.js
engine/classes/js/dle_js.js 

скажите пожалуйста что я не так делаю, Спасибо
ПафНутиЙ
ПафНутиЙ 7 апреля 2015 19:26
Разместите код вызова слайдера после вызова jquery.
Coolteams
Coolteams 28 апреля 2015 17:56
Приветсвую, как в dle 10x (index.php) разделить вот это:
$tpl->set ( '{headers}', $metatags . $opg ."n". $js_array);
ПафНутиЙ
ПафНутиЙ 28 апреля 2015 18:23
$tpl->set('{metatags}', $metatags);
$tpl->set('{opg}', $opg);
$tpl->set('{js_array}', $js_array);
AndreyKAZ
AndreyKAZ 5 июня 2015 11:42
тег {headers} нужно "распиливать" в файле /engine/modules/main.php для версии DLE 10.x
andrew1982
andrew1982 19 июня 2015 20:00
Здравствуйте, как в dle 10.4 (index.php) разделить вот это:
$tpl->set ( '{headers}', $metatags."n".$js_array );
ПафНутиЙ
ПафНутиЙ 19 июня 2015 20:06
$tpl->set('{metatags}', $metatags);
$tpl->set('{js_array}', $js_array);
andrew1982
andrew1982 20 июня 2015 02:06
ПафНутиЙ,
разделил для dle 10.4 как вы указали в /engine/modules/main.php.
и в main.tpl произвел все необходимые манипуляции. Не получилось.
Видимо есть какой то нюанс.
kabmir
kabmir 20 июня 2015 02:51
Совершенно вредный метод ускорения.
Скрипты ДЛЕ нельзя перемещать вниз, т.к. перестает работать многий функционал самого скрипта и многое ведет к фатальным ошибкам - проверено только что!
ПафНутиЙ
ПафНутиЙ 20 июня 2015 08:17
Так ведь об этом написано в самом начале статьи.
Скрипты переместить можно и нужно, но для полностью корректной работы придётся ещё двиг поковырть.
andrew1982
andrew1982 21 июня 2015 00:27
Для DLE 10.4 не посмотрите какие еще манипуляции необходимо произвести чтобы заработало. Все владельцы этой версии движка будем вам очень благодарны.
ПафНутиЙ
ПафНутиЙ 21 июня 2015 07:18
Для того, чтобы написать, нужно сначала это сделать, на живом проекте на 10.4, а делать негде и некогда.
Abdula
Abdula 24 августа 2015 11:45
После включения gzip-сжатия файлов стилей Firebug в мозилле или инспектор в хроме при просмотре стилей CSS неверно показывает номера строк объявлений, что вызывает неудобство при редактировании файлов шаблона.
Есть ли какой-то выход из этого - "золотая середина"? )
Abdula
Abdula 24 августа 2015 11:48
ПафНутиЙ,
Цитата: ПафНутиЙ
для полностью корректной работы придётся ещё двиг поковырть


Об этом хотелось бы узнать подробней)
Ведь в вашей статье этого нет(((
ПафНутиЙ
ПафНутиЙ 24 августа 2015 12:20
Цитата: Abdula
Есть ли какой-то выход из этого - "золотая середина"? )

Да, используйте модуль DLE-Asset. Решается основная проблема.
Цитата: Abdula
Ведь в вашей статье этого нет(((

И скорее всего не будет т.к. тема обширная и очень индивидуальная т.к. у каждого сайта свои модули скрипты и стили и охватить всё в статье невозможно.
Ну и заодно я избавляюсь тем самым от лишних, глупых, вопросов тех, кто в js не разбирается и руководствуясь статьёй сломает себе сайт.
NSX
NSX 27 января 2016 21:28
Добрый день, подскажите на 10.6 можно использовать данную статью?

в Index.php нету таких строк что написаны в шаге 1
ПафНутиЙ
ПафНутиЙ 31 января 2016 12:53
в 10.6 есть специальный тег, выводящий js в нужном месте.
efr07
efr07 6 мая 2016 12:43
Здравствуйте. помогите мне с моим сайтом. Сделал все как тут написано. Но сайт набирает 34 / 100
Сайт http://androplanet.com/
ПафНутиЙ
ПафНутиЙ 6 мая 2016 23:32
Так ведь там написано что необходимо сделать в первую очередь. Что у вас вызывает сложности?
efr07
efr07 7 мая 2016 14:51
Например Используйте кеш браузера для следующих ресурсов. Я вставил код из статьи Увеличение скорости загрузки сайта на DLE (часть 2). Но ничего не поменялось.
ПафНутиЙ
ПафНутиЙ 12 мая 2016 13:03
Если самостоятельно не справляетесь - обратитесь к фрилансерам.
Вижу, что вы установили mod pagespeed, попробуйте понастраивать его.
Abdula
Abdula 9 июня 2016 21:53
После оптимизации номер один, а именно после изменений в файле index.php и замены {headers} на {metatags} в main.tpl, перестали работать ссылки на файлообменники, закрытые по методу Алаича скриптом:
<script>$('a.links-fo').click(function(){window.open($(this).attr("rel"));return false;});</script>


Павел, подскажите пожалуйста, можно ли как-то обойти эту проблему, чтобы всё работало? Заранее спасибо!
ПафНутиЙ
ПафНутиЙ 9 июня 2016 21:58
Этот метод вроде как устарел уже.
Abdula
Abdula 9 июня 2016 22:09
Тогда подскажите пожалуйста, более новый!
Artyom91
Artyom91 29 января 2017 02:07
Павел, скажите пожалуйста, а то не понял. Да и может инфа в посте устарела, как лучше подключать скрипты:

1. Сначала JS потом CSS
2. Сначала CSS потом JS

Это касательно всех скриптов, естественно перед тегом </body> но есть маленькое уточнение, вот например, у меня есть HTML контент, который тоже перед этим тегом вставляется, нужно под этим контентом скрипты подключать или над ним, или не имеет значения?

Еще вопрос, есть скрипт яндекс метрики, аналитики, мои скрипты подключать после них или до них, т.е над ними?

Что-то еще хотел, а.... У меня стоит модуль pagespeed от гугла, там есть своё кеширование, так вот, кешировать скрипты через функционал DLE или будет какой-то конфликт?

Еще вопрос, если кешировать через функционал DLE, как лучше их подключать, выводить каждый файл именно там, где он нужен, или лучше везде выводить, чтобы один раз сразу всё закешировалось, пример ниже:

Например, у меня есть чат от сандера, там есть js,css но чат не на всех страницах сайта, подключать скрипты на этих страницах или нет?
ПафНутиЙ
ПафНутиЙ 4 февраля 2017 19:26
Если у вас установлен mod_pagespeed - я бы не стал пережвать на вашем месте за порядок скриптов и стилей, просто настройте pagespeed. C его помощью вмолне можно разогнать сайт в 80 до 99 попугаев в pagespeed insights, без этого мода реализовать такое довольно сложно (правило 80/20 никто не отменял)

Добавить комментарий

Комментировать могут только зарегистрированные пользователи

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.