Перейти к содержимому



Способы ускорения DataLife Engine (DLE)

#1 GVA
GVA
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205
5

Отправлено 11 Январь 2014 - 10:45

Доброго времени суток, уважаемые формучане!

Сегодня хочу рассказать вам о способах ускорения лучшего новостного (и не только) движка.
Кто первый раз сталкивается с ним может почитать его возможности и преимущества на официальном сайте - http://dle-news.ru/
Движок платный, но очень прост в управлении и гибок!

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

Итак, начнём, но сначала проверьте свой сайт этим сервисом:

http://developers.go...speed/insights/

а то вдруг у вас всё хорошо, а я заставляю ещё что-то делать :)

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 и javascript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "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/javascript "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/javascript" src="/engine/classes/min/index.php?charset=windows-1251&amp;f={THEME}/js/libs.js,{THEME}/js/script.js&amp;7"></script>


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

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

Для этого в корне сайта открываем index.php
Находим строчку:
$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. Тем самым вы уменьшите качество картинки без потери для зрения человека, и, тем самым, сократить его размер.



В заключении проверьте свой сайт ещё раз с помощью этого сервиса

http://developers.go...speed/insights/

и скажите, сколько вам удалось выиграть баллов, после проделанных действий?


Материал был подготовлен специально для форума masterWEBS.ru
Данные советы не моя разработка, возможно, многие о них знают, а кто-то только что узнал.
Автор: Вадим Домашнев (GVA)

 

 

Сообщение отредактировал GVA: 11 Январь 2014 - 19:39

  • 1

#2 Ixman
Ixman
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

Отправлено 11 Январь 2014 - 12:40

Если на сервере установлен nginx, если не ошибаюсь, то сжатие некоторых типов файлов, например js, можно настроить только в конфинге nginx. Файл настроек htaccess здесь не поможет

Сообщение отредактировал Ixman: 11 Январь 2014 - 21:22

  • 0


#3 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 13:16

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

В этом случае не кешируется только js, вы правы. Всё остальное прекрасно кешируется
  • 0

#4 Thrash
Thrash
  • Пользователь PRO
  • 652 сообщений
  • Репутация: 56

Отправлено 11 Январь 2014 - 18:10

Классная статья, жаль что плюсик только один раз в неделю можно ставить :(

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"

Я так понял, что картинки этот код кеширует на месяц? "1 month" — 1 месяц. А можно, чтобы навсегда?

Сообщение отредактировал Thrash: 11 Январь 2014 - 18:10

  • 0

#5 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 18:20

Поняли правильно.

Можете поставить один год - "access plus 1 years" это тоже очень много, чуть меньше, чем "навсегда" :)
Ну а реально навсегда сохранить их в кэше не получится, лично я такого решения не подскажу вам, да и незачем их туда на столько пихать :)
  • 0

#6 Thrash
Thrash
  • Пользователь PRO
  • 652 сообщений
  • Репутация: 56

Отправлено 11 Январь 2014 - 18:59

а почему именно месяц?
  • 0

#7 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 19:27

Указанным способом мы всего лишь даём рекомендации браузеру о том, что как бы желательно кешировать определённые файлы на определённое время.
Браузер может выполнить их, а может и нет, это его дело.
Конечно, он сам закеширует то, что ему, действительно, нужно.
Тем самым рекомендация в 1 месяц будет для меня оптимальной. В этом случае при переходе на другую страницу сайта пользователь получит плюс к скорости загрузки. Ставить и на 1 день можно, и на неделю, и на год - разницы особой нет. Вернее ошибки в этом нет, а разница небольшая, но всё же есть.

Допустим, что, по вашему мнению, будет, если вы существенно поменяете файлы стилей и измените картинки, при этом кеширование всего стоит на год?


  • 0

#8 Thrash
Thrash
  • Пользователь PRO
  • 652 сообщений
  • Репутация: 56

Отправлено 11 Январь 2014 - 21:08

GVA, ну если изменить картинки, кеширование должно произойти заново.
  • 0

#9 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 21:18

Thrash, да, до тех пор пока не изменился кешируемый контент.
Кешировать все, что поддается кешированию и при этом не изменяется относительно долго. Кешировать бессмысленно лишь ту информацию, которая постоянно меняется Поэтому, особой разницы в том, поставить месяц или год я не вижу. Если я в чём то неправ, то, надеюсь, меня поправят более узкие специалисты в конкретном вопросе :)
  • 0

#10 Ixman
Ixman
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

Отправлено 11 Январь 2014 - 21:24

Да тема полезная, но не полная по работе с PageSpeed. Кстати я хотел подобную темку накатать, только общую для всех движков
  • 0


#11 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 21:40

Ixman, многое из вышеперечисленного применимо и ко всем остальным движкам. Исключением, конечно является первый файл для кешируемых данных, ну и некоторые модификации самого движка. Хотя алгоритм оптимизации скорости сайта практически ничем не отличается от остальных движков.

полезная, но не полная по работе с PageSpeed



Конечно, на этом оптимизация в качестве ускорения не заканчивается. Я обязательно дополню данную тему ещё как минимум 2 пунктами, так что подписывайтесь :)

Кстати я хотел подобную темку накатать, только общую для всех движков


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

В планах только выкладывать некоторые полезные модификации по DLE, прежде всего те, которые сам использую. Благо, их накопилась уйма, только это всё нужно систематизировать, подробно описать. Тогда вопросов по "а что у меня это не работает, что я не так делаю?" будет меньше.
  • 0

#12 Ixman
Ixman
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

Отправлено 11 Январь 2014 - 22:07

Я бы о каждом движке не стал писать, это не реально. Я об общих настройках сервера, средствами htacces или конфингов. Ну + ещё можно дополнить статью как оптимизировать графику, css, js, html. Тема по ускорению сайта очень большая и интересная, но к сожалению на 100% не применима к тем, у кого сайты на шаред хостингах
  • 0


#13 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 22:14

Ixman, полностью с вами соглашусь!
Однако, зачастую новички не умеют пользоваться универсальными мануалами :) В любом случае, сегмент тех, кому эта информация чрезвычайно полезна большой. А значит тема будет актуальной.

Ну а я тем временем, как и говорил выше, остановлюсь на моём любимом DLE ;)
  • 0

#14 Thrash
Thrash
  • Пользователь PRO
  • 652 сообщений
  • Репутация: 56

Отправлено 11 Январь 2014 - 23:05

Thrash, да, до тех пор пока не изменился кешируемый контент.
Кешировать все, что поддается кешированию и при этом не изменяется относительно долго. Кешировать бессмысленно лишь ту информацию, которая постоянно меняется Поэтому, особой разницы в том, поставить месяц или год я не вижу. Если я в чём то неправ, то, надеюсь, меня поправят более узкие специалисты в конкретном вопросе :)

Значит, кешировать надо фон, шапку, логотип, иконки меню и прочие штучки-дрючки
  • 0

#15 GVA
GVA
    Topic Starter
  • Пользователь PRO
  • 999 сообщений
  • Репутация: 205

Отправлено 11 Январь 2014 - 23:24

Грубо говоря да, если к прочим вы отнесли так же файлы стилей и js и др :)
Вставляйте первый вариант кода про кеширование, он заведомо правильный для DLE.
Если, вдруг, у вас другой движок, то ставьте второй вариант кода.

Сообщение отредактировал GVA: 11 Январь 2014 - 23:42

  • 0

robot
robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Totti Totti 1-й за Январь
Очков активности: 3 937 6 тем, 87 сообщений, 25 баллов репутации
ТОП самых активных за этот месяц
  • Фотография Megoydagi
    #1

    Megoydagi (24ho.ru)
    Очков активности: 502.5 5 тем, 52 сообщения, 5 баллов репутации

  • Фотография NataliaAntalia
    #2

    NataliaAntalia (zdorovemedicina.ru)
    Очков активности: 130.5 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 76.5 Вне конкурса за определение пользователя месяца

  • Фотография magnet
    #4

    magnet (rbfxdirect.com)
    Очков активности: 55.5 2 темы, 31 сообщение, 1 балл репутации

  • Фотография albedo
    #5

    albedo (online24news.ru)
    Очков активности: 34.5 1 тема, 20 сообщений, 1 балл репутации

  • Фотография TindrumGM
    #6

    TindrumGM (novosti-land.ru)
    Очков активности: 28.5 5 тем, 4 сообщения, 1 балл репутации

  • Фотография MattCutts
    #7

    MattCutts (dmitrylee.ru)
    Очков активности: 22.5 Вне конкурса за определение пользователя месяца

  • Фотография Totti
    #8

    Totti
    Очков активности: 21 Вне конкурса за определение пользователя месяца

  • Фотография kolver
    #9

    kolver
    Очков активности: 19.5 2 темы, 7 сообщений, 1 балл репутации

  • Фотография Step01
    #10

    Step01
    Очков активности: 19.5 2 темы, 7 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 30.01.2020
  • Яндекс выдача: 23.02.2020
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru