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

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

27.08
153
46 993
Увеличение скорости загрузки сайта на 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. Снова проверяем сайт с помощью гугла (ссылка в начале поста) и радуемся существенному прибавлению баллов.


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

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

Комментарии

IMP
IMP 27 августа 2012 04:38
thanks, very useful tips feel
Daiv
Daiv 27 августа 2012 05:06
да действительно давно такого не видел для DLE, хотя много и знал.
ПафНутиЙ
ПафНутиЙ 27 августа 2012 09:48
На самом деле gzip для css и js файлов появился ещё в 8.3, но в силу неизвестных мне причин не используется вебмастерами, может дело в неправильно-свёрстанных шаблонах (на оффсайта проскакивали подобные проблемы)
FaustL
FaustL 29 августа 2012 02:28
$tpl->set ( '{headers}', $metatags."n".$js_array );

Привет ПафНутиЙ! Поправь пожалуйста
FaustL
FaustL 29 августа 2012 02:29
У тебя съедается символ \
ПафНутиЙ
ПафНутиЙ 29 августа 2012 09:04
Спасибо, поправил. Странное поведение, в исходном коде сжирается исходный код ))
FaustL
FaustL 29 августа 2012 15:27
Проверил свой сайт на скорость: 67 из 100.
Следующие изображения, предоставленные с сайт_ру, необходимо объединить в CSS-спрайты, чтобы уменьшить их количество до минимального.

Друзья! Как это понять, что именно надо сделать?
ПафНутиЙ
ПафНутиЙ 29 августа 2012 16:43
на сайте много мелких картинок. если объединить их в одну (в спрайт) - это сэкономит количество запросов к серверу и ускорит загрузку сайта. По теме спрайтов гугл много что может подсказать, в т.ч. генераторы спрайтов.
quato
quato 29 августа 2012 17:44
Это рекурсия ))
quato
quato 29 августа 2012 17:45
В заголовке советую поправить "чать" на часть. Хотя возможно это именно фишка fellow
ПафНутиЙ
ПафНутиЙ 29 августа 2012 19:44
Поправил. Надо завязывать по ночам публикации делать)
TITAN-UZ
TITAN-UZ 30 августа 2012 00:16
А как оптимизировать эти:

Сжатие http://site.ru/ позволит уменьшить размер на 34.8Кб (на 79%).
Сжатие http://site.ru/engine/editor/css/default.css позволит уменьшить размер на 3.4Кб (на 75%).
Сжатие http://site.ru/engine/editor/scripts/webfont.js позволит уменьшить размер на 2.0Кб (на 66%).
ПафНутиЙ
ПафНутиЙ 30 августа 2012 09:47
помоему визуальный редактор сжимается, когда включаешь gzip не?
denis5555
denis5555 30 августа 2012 18:21
В следующий раз постараюсь рассказать как использовать кеш браузера для ещё большего ускорения страниц.


Буду ждать с нетерпением, это проблемам всех сайтов на DLE
ПафНутиЙ
ПафНутиЙ 31 августа 2012 09:28
Я сейчас пытаюсь решить проблему с nginx+apaghe+mod_expires.c - там не работает установка значений кеша в .htaccess
если же сервен на чистом апаче - проблем никаких)
Axel
Axel 1 сентября 2012 18:57
После выполнения первого пункта у меня перестает работать Ajax belay
Версия DLE 9.5.

Так же всякие скрипты типа от VK и Гугл Аналитики установлены перед </head>, как и сказано в инструкции по их установке кода. Получается что {headers} и {AJAX}нужно установить перед <head> ?
ПафНутиЙ
ПафНутиЙ 1 сентября 2012 19:03
Ну так никто и не запрещает ставить скрипты куда угодно.
Если у вас всё размещается в head - оставьте там. Единственное, что нужно учитывать - не суёта в gzip сторонние скрипты, такие как vk и аналитику.
Axel
Axel 1 сентября 2012 21:55
ПафНутиЙ,
Цитата: ПафНутиЙ
Единственное, что нужно учитывать - не суёта в gzip сторонние скрипты, такие как vk и аналитику.

Вот тут я ничего не понял :)

Так как выполнить первый пункт? Когда делаю все по инструкции, получается лажа.
ПафНутиЙ
ПафНутиЙ 1 сентября 2012 22:47
никак. его не обязательно выполнять, так же как и второй. Не получается - забейте, получится как нибудь в другой раз.
Axel
Axel 1 сентября 2012 23:20
ПафНутиЙ,
Да ну как же так)
Хотелось бы ускорить загрузку сайта)
ПафНутиЙ
ПафНутиЙ 2 сентября 2012 10:16
Тогда просто не выполняйте первый шаг. Шаги друг от друга не зависят в принципе. Это моё личное мнение, о том, что скрипты нужно грузить в конце, для ускорения загрузки страницы.
Axel
Axel 2 сентября 2012 11:14
Ну все, получилось! Не существенно, но скорость улучшилась. По гуглу оценка поднялась с 65 до 68 баллов :)
Есть еще метод увеличения скорости загрузки страницы?)

Оценка в 68 баллов, это нормально?
websot
websot 2 сентября 2012 13:43
Первый вариант когда делаешь, то заголовки начинают пропадать у всего сайта (9.6)
kabmir
kabmir 2 сентября 2012 18:14
Официальный ответ разработчика ДЛЕ:
"О том как сжимать стили и сторонние скрипты написано еще на офф. Сайте два
года назад. А переносить стандартные скрипты, из блока head в конец блока
body бессмысленно, т.к. они не запускаются до загрузки страницы и ничего не
делают. Это актуально делать только для выполняющихся скриптов, например тех
что загружают рекламу со сторонних сайтов и прочее."
ПафНутиЙ
ПафНутиЙ 2 сентября 2012 23:08
68 - слабовато. Но смотря с чем сравнивать. ))
ПафНутиЙ
ПафНутиЙ 2 сентября 2012 23:17
websot,
значит чтото не так деаете.

kabmir,
Это ошибочное мнение. Я уже сообщал свою точку зрения относительно библиотеки jquery, которая должна грузиться с googlecode или с сайта jquery, а из папки движка - в случаи недоступности google или jquery.com.
Целсофт не всегда слушает или слышит.
Поищите информацию об ускорении загрузки страниц - первое что вы найдёте - перенос скриптов вниз, объединение млких скриптов в один файл, картинки-спрайты и т.д.
Axel
Axel 3 сентября 2012 05:44
А можете подсказать серсис для проверки скорости сервера? Имею выделенный сервер и проблем с загрузкой никогда не замечал, но все же.

68 баллов, не очень радуют меня. Хотя шаблон изначально создавал легким и быстрым. рекламных кодов нет...
ПафНутиЙ
ПафНутиЙ 3 сентября 2012 09:19
Цитата: Axel
А можете подсказать серсис для проверки скорости сервера? Имею выделенный сервер и проблем с загрузкой никогда не замечал, но все же.

Тут ничего подсказать не могу.
websot
websot 3 сентября 2012 20:40
Прям на мою днюху выложил этот материал
Дополнение:
Да я просто не углядел <body> аа думал что </body> по привычке)
Буду в след. раз внимательнее.
TITAN-UZ
TITAN-UZ 6 сентября 2012 03:06
Как исключит js для модуля рейтинг комментариев! После вставки рейтинга показывает 0 до удаления кеша!

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

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

Информация

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