X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Способы ускорения DataLife Engine (DLE)
olegr
olegr
Topic Starter сообщение 11.1.2014, 11:45; Ответить: olegr
Сообщение #1


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

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

Конечно, некоторые скажут что он и так очень быстрый. Действительно, он оптимизирован замечательно, создаёт минимальную нагрузку на сервер, но это не предел. В этом топике будут рассмотрены методы ускорения 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 и 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. Тем самым вы уменьшите качество картинки без потери для зрения человека, и, тем самым, сократить его размер.



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

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


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

Сообщение отредактировал GVA - 11.1.2014, 20:39
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 11.1.2014, 13:40; Ответить: ixman
Сообщение #2


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

Сообщение отредактировал Ixman - 11.1.2014, 22:22
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
olegr
olegr
Topic Starter сообщение 11.1.2014, 14:16; Ответить: olegr
Сообщение #3


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

В этом случае не кешируется только js, вы правы. Всё остальное прекрасно кешируется
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Thrash
Thrash
сообщение 11.1.2014, 19:10; Ответить: Thrash
Сообщение #4


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

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.1.2014, 19:10
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
olegr
olegr
Topic Starter сообщение 11.1.2014, 19:20; Ответить: olegr
Сообщение #5


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

Можете поставить один год - "access plus 1 years" это тоже очень много, чуть меньше, чем "навсегда" :)
Ну а реально навсегда сохранить их в кэше не получится, лично я такого решения не подскажу вам, да и незачем их туда на столько пихать :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Thrash
Thrash
сообщение 11.1.2014, 19:59; Ответить: Thrash
Сообщение #6


а почему именно месяц?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
olegr
olegr
Topic Starter сообщение 11.1.2014, 20:27; Ответить: olegr
Сообщение #7


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

Допустим, что, по вашему мнению, будет, если вы существенно поменяете файлы стилей и измените картинки, при этом кеширование всего стоит на год?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Thrash
Thrash
сообщение 11.1.2014, 22:08; Ответить: Thrash
Сообщение #8


[member=GVA], ну если изменить картинки, кеширование должно произойти заново.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
olegr
olegr
Topic Starter сообщение 11.1.2014, 22:18; Ответить: olegr
Сообщение #9


[member=Thrash], да, до тех пор пока не изменился кешируемый контент.
Кешировать все, что поддается кешированию и при этом не изменяется относительно долго. Кешировать бессмысленно лишь ту информацию, которая постоянно меняется Поэтому, особой разницы в том, поставить месяц или год я не вижу. Если я в чём то неправ, то, надеюсь, меня поправят более узкие специалисты в конкретном вопросе :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 11.1.2014, 22:24; Ответить: ixman
Сообщение #10


Да тема полезная, но не полная по работе с PageSpeed. Кстати я хотел подобную темку накатать, только общую для всех движков
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) DLE xProtect
2 xoopw 5934 15.1.2024, 21:06
автор: Diana_Wesley
Открытая тема (нет новых ответов) Обновить сайт на CMS DLE
1 Sawich 1621 2.9.2023, 10:10
автор: WoWeb
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыОказываю услуги по CMS Datalife Engine
Большой спектр услуг
231 bobur 159041 29.11.2022, 12:03
автор: lztr29
Открытая тема (нет новых ответов) Изготовление красивых сайтов на DLE под ключ | Доступные цены
от 2000 руб.
1 Admiral_ukr 1555 20.11.2022, 10:08
автор: Webmaster24
Открытая тема (нет новых ответов) Ищу спеца по DLE вылечить сайт
4 Reactive 2594 22.10.2022, 9:01
автор: Fozik77


 



RSS Текстовая версия Сейчас: 19.3.2024, 7:16
Дизайн