Супербыстрый хостинг на SSD от 165р в месяц   •   Реклама
3 897 просм
45 комм
Поделиться:

Минификация (сжатие) исходного кода (HTML) в DLE на PHP

Недавно мы с вами рассмотрели способ минификации исходного кода на сайте Bitrix. Чтобы не дублировать сообщение о том, что это такое и что оно дает, прочитайте статью по ссылке выше.

В данной статье мы будем минифицировать (сжимать) исходный код сайта, который находится на CMS DataLife Engine.

Итак, приступим.

1. Подключитесь к вашему сайту по FTP.

2. Откройте файл index.php в корневой папке вашего сайта и сразу после <?php вставьте:

function minify_html($buffer) {

	$search = array("/\>[^\S ]+/s", "/[^\S ]+\</s", "/(\s)+/s", "/<!--(?![^<]*noindex)(.*?)-->/");
	$replace = array(">", "<", "\\1", "");
	$buffer = preg_replace($search, $replace, $buffer);

	return $buffer;

}

Сохраните и отправьте файл обратно на сайт.

3. Далее откройте файл main.php в папке /engine/modules/. Найдите:

echo $tpl->result['main'];

и замените его на:

ob_start("minify_html");
echo $tpl->result["main"];
ob_end_flush();

Сохраните и также отправьте файл на сайт.

В панели управления вашим сайтом, на главной странице, почистите кэш, после чего зайдите на свой сайт и посмотрите исходный код. Если вы все сделали правильно – исходный код вашего сайта будет в одну строку.

45
комментариев
Гостям запрещено участвовать в обсуждениях сайта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
Администратор  |  725

Евгений Лысенко, здравствуйте, да.

Ошибка была не в скрипте из статьи, а в файле show.full.php (папка /engine/modules/) на Вашем сайте.

1994 строка в файла имела такой вид:

$tpl->set("{full-story}", $row["full_story"]);$row['full_story'] );

Это ошибка, и должно быть:

$tpl->set("{full-story}", $row["full_story"]);

Исправил это и исходный код сжимается без проблем с нормальной работой сайта.

1.09 в 13:46
  • 0
Проверенный  |  6

Артем Мáлков, Здравствуйте, есть ли информация по этой ошибке ?

1.09 в 11:35
  • 0
Проверенный  |  6

Артем Мáлков, Данные отправил

30.08 в 13:44
  • 0
Проверенный  |  6

Артем Мáлков, Сайт на стадии запуска, то не всегда к нему доходят руки. smiley

30.08 в 13:37
  • 0
Администратор  |  725

Евгений Лысенко, долго что-то решали проблему smiley

Присылайте данные через форму обратной связи, постараемся помочь.

29.08 в 18:41
  • 0
Проверенный  |  6

Артем Мáлков, да могу предоставить! но уже сделал бэкап ибо обычно очисткой не пропадала ошибка

29.08 в 15:33
  • 0
Администратор  |  725

Bashmak, попробуйте так:

ob_start("minify_html");

eval(" ?>".$tpl->result["main"]."<?php ");

ob_end_flush();

Ломать может, если в верстке есть ошибки.

23.08 в 04:04
  • 0
Проверенный  |  8

Вроде сработало, но, хак в некоторых местах ломает дизайн сайта, наверное всё таки не буду использовать. Да и в page speed у гугла вообще ничего не изменилось.

22.08 в 22:46
  • 0
Проверенный  |  8

Может вот так?

ob_start("sanitize_output");

eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

ob_end_flush();

Так правильно будет?

22.08 в 22:37
  • 0
Проверенный  |  8

Не смог установить хак, так как у меня другой плагин меняет

echo $tpl->result['main'];

на

eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

Это мне нужно для того чтобы я мог в шаблонах tpl использовать php код.

Как-то можно адаптировать под этот код?

22.08 в 22:33
  • 0
Администратор  |  725

Bashmak, пробуйте. Ждем результатов. smiley

20.08 в 00:16
  • 0
Проверенный  |  8

Артем Мáлков, а посещаемость какая была?

Кажись при большой посещаемости сервер не выдержит каждому юзеру пока он перемещается по сайту каждый раз сживать ему код. А если например одновременно 500 или 1000 человек зайдут на сайт, сервер должен будет произвести 1000 сжатий страниц?

Попробую поставить на пару дней, потом отпишу о результатах.

20.08 в 00:01
  • 0
Администратор  |  725

Bashmak, каждый раз при посещении. Для кеширования страниц вроде есть какой-то сторонний модуль.

А так, где я лично тестировал этот способ, даже на слабеньком хостинге проблем не наблюдал.

19.08 в 23:45
  • 0
Проверенный  |  8

А этот процесс хоть как-то кэшируется? Или сервер производит сжатие каждый раз когда посетитель открывает какую-либо страницу на сайте?

19.08 в 23:24
  • 0
Администратор  |  725

Евгений Лысенко, есть возможность предоставить доступ к сайту? Админка+FTP.

8.08 в 21:14
  • 0
Проверенный  |  6

Артем Мáлков, плагин только один стоит который не родной идет.

Telegram Posting

Кеш чистил и браузера и CMS, заходил через инкогнито такое же самое

8.08 в 20:56
  • 0
Администратор  |  725

Евгений Лысенко, Здравствуйте.

Кеш чистили? Плагинов много установлено?

8.08 в 19:30
  • 0
Проверенный  |  6

Добрый день, после этого код сжался но при переходе на страницу с новостью выдает след ошибку

/engine/cache/system/plugins/ba23314b9ef6d588ec169a40d86d8b8f.php on line 1994

но данного файла даже нету в папке, а точней нету этого /plugins/ba23314b9ef6d588ec169a40d86d8b8f.php

8.08 в 18:12
  • 0
Администратор  |  725

list, спасибо за замечания. Просмотрели. nerd

Кавычки поправили и добавили рабочий вариант.

20.12 в 00:13
  • 1
Пользователь  |  2

Так, как в статье не работает, там две кавычки лишние. Если их убрать, то работает, но только открывающий тег появляется, а закрывающий <!--/noindex--> нет

19.12 в 23:29
  • 0
Администратор  |  725

list, поправили код в статье. Проверьте.

18.12 в 21:38
  • 0
Пользователь  |  2

Добрый день, не подскажете как можно добавить в исключение эти теги: <!--noindex--><!--/noindex-->

17.12 в 20:46
  • 0
Гости  |  679

Спасибо большое! В большинстве случаев PageSpeed просит это!

27.09 в 13:00
  • 0
Администратор  |  725

Артём, спасибо за замечание. В статье поправил.

12.09 в 22:58
  • 0
Гости  |  679

Здравствуйте Артём, после того как вы изменили 2 пункт, ваш Хак перестал работать. У меня версия 11.2.

К слову, прежняя версия кода:

function sanitize_output($buffer) {

$search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s', '/<!--(.*?)-->/',);

$replace = array('>', '<', '\\1', '');

$buffer = preg_replace($search, $replace, $buffer);

return $buffer;

}

работает отлично.

12.09 в 18:59
  • 0
Гости  |  679

да, все равно удаляет код карты, а как только отключаю сжатие все встает на свои места

21.04 в 19:39
  • 0
Администратор  |  725

андрей,

$search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s', '/<!--(.*?)-->/',);

замените на

$search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(?![^<]*<\/yamps>)(\s)+/s', '/<!--(.*?)-->/',);

Пробовали?

20.04 в 23:53
  • 4
Гости  |  679

Как мне исключить эти теги ? я так и не понял

20.04 в 15:38
  • 0
Администратор  |  725

андрей, на первой странице, 3 комментарий снизу. Список исключения делается по аналогии.

17.04 в 01:07
  • 5
Гости  |  679

Как не сжимать определенные теги типа <yamps></yamaps>?

16.04 в 23:47
  • 1
Администратор  |  725

Zhurik, хак не распространяется на админку.

14.03 в 02:24
  • 10
Гости  |  679

В админке тоже все будет в одну строчку или так как и прежде?

13.03 в 20:23
  • 0
Администратор  |  725

Найден небольшой недочет. При использовании тега [code] - исходный код внутри этого тега тоже сжимается. Чтобы добавить исключение, строку

$search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s', '/<!--(.*?)-->/',);

замените на

$search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(?![^<]*<\/code>)(\s)+/s', '/<!--(.*?)-->/',);

13.08 в 14:49
  • 5
Администратор  |  725

Megazvezda, этого мало чтобы повысить оценку Google. Но при установке - все равно является плюсом. wink

10.06 в 13:02
  • 5
Гости  |  679

Спасибо большое! Только мне этот хак не подошел. После манипуляций гугл спеед занижает показатели

10.06 в 09:03
  • 0
Администратор  |  725

Megazvezda, Здравствуйте!

3-м шагом, echo $tpl->result['main']; ищите не в main.php а в index.php (почти в самом конце) который лежит в корне вашего сайта.

10.06 в 02:51
  • 5
Гости  |  679

Добрый вечер. У меня на версии 10,3 нет этого файла маин

9.06 в 19:21
  • 1
Администратор  |  725

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

17.04 в 15:55
  • 6
Гости  |  679

Здравствуйте !

Скажите поисковые системы нормально будут видеть и относится к этому коду ?

Проблем по индексации не будет ?

17.04 в 10:27
  • 1
Гости  |  679

Спасибо пригодилось.

8.04 в 21:32
  • 0
Гости  |  679

Благодарю, хорошая вещь все отлично работает;)

25.03 в 19:56
  • 2
Гости  |  679

спасибо большое, все работает =) Крутая штука, особенно поможет тем кто делает оптимизацию для google pagespeed.

23.03 в 13:14
  • 1
Администратор  |  725

Богдан, этого в 3 шаге

ob_start("sanitize_output");

echo $tpl->result['main'];

ob_end_flush();

замените на

if($member_id['user_group'] != 1) { ob_start("sanitize_output"); }

echo $tpl->result['main'];

if($member_id['user_group'] != 1) { ob_end_flush(); }

Где 1 - это ID группы, для которой сжатие не работает, в нашем случае - это группа администраторов.

23.03 в 01:24
  • 7
Гости  |  679

Скажите, а как прописать, чтоб код сжимался всем кроме админа?

23.03 в 00:11
  • 0
Гости  |  679

Спасибо, давно искал не мог найти решения, а тут так все просто супер)

22.03 в 23:55
  • 2
Подняться наверх
«Pandoge» - помощник веб-мастера