Войти
» Способы ускорения DLE

Способы ускорения DLE

0 589 admin 19-02-2019 12:36 ---

В этой статье мы раскажем, как можно ускорить скорость закгрузки сайта на движке DLE.

Конечно, некоторые скажут что он и так очень быстрый. Действительно, он оптимизирован замечательно, создаёт минимальную нагрузку на сервер, но это не предел. В этом топике будут рассмотрены методы ускорения DLE (как ускорить DLE). Все советы применимы к актуальной версии DLE и будут успешно работать и для новых версий. По моим наблюдениям, структура DLE в последних версиях не менялась. Так же эти советы подойдут и для более поздних версий, но если у вас что-то не сработало с версией 9.0 и ниже то прошу не захламлять топик вопросами относительно старых версий, а просто обновить её до актуальной.

1. Кеширование данных.

Наверное, все знают что такое кеш (или кэш) браузера. Не будем вдаваться в подробности определения этого слова. Все его не раз чистили и что такое кеш знаем. Как его использовать при ускорении движка? Очень просто! Нужно указать срок хранения различных файлов, будь то это картинки или скрипты.. Указать, сколько времени браузер должен их хранить. В этом случае кешируемые данные не будут загружаться при каждом переходе посетителя на следующую страницу сайта. При первом заходе на сайт все данные закешируются, при переходи на другие страницы сайта от получит прибавку к скорости страниц, объяснил так сказать на пальцах.

Для этого в корневой файл .htaccess нужно вставить данный код:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# html
ExpiresByType text/html "access plus 0 seconds"
# XML
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
# RSS
ExpiresByType application/rss+xml "access plus 1 hour"
# Favicon
ExpiresByType image/x-icon "access plus 1 week"
# Картинки
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
# HTC файлы  (например css3pie)
ExpiresByType text/x-component "access plus 1 month"
# Нестандартные шрифты сайта
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# CSS и jаvascript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/jаvascript "access plus 1 year"
</IfModule>
# Cache-Control браузера
<ifModule mod_headers.c>
# 30 дней
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 30 дней
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 2 дня
<filesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>
# 1 день
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>
<IfModule mod_setenvif.c>
#Эта конструкция для говнобраузера
#Запрет отдачи HTTP-заголовков Vary
BrowserMatch "MSIE" force-no-vary
BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
</IfModule>

или

<IfModule mod_expires.c>
Header append Cache-Control "public"
FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 0 minutes"
ExpiresByType image/ico "access plus 1 years"
ExpiresByType text/css "access plus 1 years"
ExpiresByType text/jаvascript "access plus 1 years"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/jpeg "access plus 1 years"
ExpiresByType image/bmp "access plus 1 years"
ExpiresByType image/png "access plus 1 years"
</IfModule>

Разбирать за что отвечает каждая строчка кода нет смысла. Стоит сказать, что первый код больше оптимизирован для DLE, но можно использовать и второй.

2. GZIP-СЖАТИЕ

Для включения данной функции, господа, вам нужно проследовать в админку и в настройках системы найти gzip-сжатие для js и css и активировать их. Думаю, сами найдёте?) Даже раздел вам указал.

Дальше вам нужно включить сжатие для CSS файлов, которые, как правило, лежат в main.tpl
Для этого найдём их, они будут у вас выглядеть примерно так:

<link media="screen" href="{THEME}/styles/bbcodes.css" type="text/css" rel="stylesheet" />
<link media="screen" href="{THEME}/styles/slider.css" type="text/css" rel="stylesheet" />
<link media="screen" href="{THEME}/styles/style.css" type="text/css" rel="stylesheet" />
<link media="screen" href="{THEME}/styles/engine.css" type="text/css" rel="stylesheet" />

Вам нужно внимательно посмотреть на код, расположенный выше и преобразовать его в следующий:

<link rel="stylesheet" href="/engine/classes/min/index.php?charset=windows-1251&amp;f={THEME}/style/style.css,{THEME}/style/slider.css,{THEME}/style/bbcodes.css,{THEME}/style/engine.css&amp;7" />

Данный код тоже не объясняю, кому интересно спросите, персонально разъясню каждую деталь. По аналогии делается и с js-файлами, с ними должно получиться что-то в этом роде:

<script type="text/jаvascript" src="/engine/classes/min/index.php?charset=windows-1251&amp;f={THEME}/js/libs.js,{THEME}/js/script.js&amp;7"></script>

3. Переносим все скрипты в конец страницы.

Задача состоит в том, чтобы перенести из верхней части страницы все скрипты - в нижнюю. Тем самым они будут инициироваться после загрузки основного содержимого. Т.е. мы убираем проблему, когда пользователь заходит на страницу и в течении 10 секунд смотрит на пустой экран (ждёт пока загрузятся все скрипты, а потом контент). Мы же сделаем чтобы сначала загрузился контент и оформление, а затем уже подгружались скрипты.

Для этого в корне сайта открываем     /engine/modules/main.php


Находим строчку (644):

$tpl->set ( '{headers}', $metatags."\n".$js_array );

Заменяем на

$tpl->set ( '{headers}', $js_array );
$tpl->set ( '{metatags}', $metatags );

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

Открываем main.tpl своего шаблона
Находим {headers} и заменяем на {metatags} и удаляем {AJAX}

Спускаемся в самый низ, находим

</body>

и перед ним вставляем {headers}{AJAX}

Далее между

{headers}{AJAX}
и
</body>

подключаем все скрипты и счётчики необходимые для работы сайта.

4. Оптимизация изображений

Ну, думаю тут вообще всё просто. Этот пункт так же применим ко всем движкам. Вам нужно сократить размер всех изображений. Если у вас Интернет быстрый, то проблем с их загрузкой у Вас нет. Но а как же, если он медленный? И не у вас, а у ваших посетителей? Для этого поработайте над изображениями.

Для этого используйте (или хотя бы старайтесь использовать) изображения такого размера, которого нужно показывать на сайте. Не надо с помощью CSS изменять огромную картинку на миниатюру. Для уменьшения изображения воспользуйтесь фотошопом.
Альтернатива фотошопу очень хорошая бесплатная программка "PaintNET". Там можно уменьшить размер изображения до нужных параметров.

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

Источник